Leçon supplémentaire - Hiérarchies déséquilibréesSupplemental lesson - Ragged hierarchies

S’applique à : SQL Server 2017 et versions ultérieures Analysis Services Azure Analysis Services Power bi Premium

Dans cette leçon supplémentaire, vous allez résoudre un problème courant se produisant lors de l’ajout d’un tableau croisé dynamique sur des hiérarchies qui contiennent des valeurs vides (membres) à différents niveaux.In this supplemental lesson, you resolve a common problem when pivoting on hierarchies that contain blank values (members) at different levels. Par exemple, une organisation où un cadre a à la fois des responsables de département et des non-cadres comme collaborateurs.For example, an organization where a high-level manager has both departmental managers and non-managers as direct reports. Ou bien des hiérarchies géographiques composées des éléments Pays-Région-Ville, où certaines villes n’ont pas d’état ou de région parent, par exemple Washington D.C. ou l’État de la Cité du Vatican.Or, geographic hierarchies composed of Country-Region-City, where some cities lack a parent State or Province, such as Washington D.C., Vatican City. Quand une hiérarchie a des membres vides, elle descend souvent à des niveaux différents ou déséquilibrés.When a hierarchy has blank members, it often descends to different, or ragged, levels.

Capture d’écran d’une hiérarchie Employee qui contient une valeur vide.

Les modèles tabulaires de niveau de compatibilité 1400 disposent d’une propriété Masquer les membres supplémentaire pour les hiérarchies.Tabular models at the 1400 compatibility level have an additional Hide Members property for hierarchies. Le paramètre Par défaut suppose qu’il n’y a aucun membre vide à aucun niveau.The Default setting assumes there are no blank members at any level. Le paramètre Masquer les membres vides exclut les membres vides de la hiérarchie quand ils sont ajoutés à un tableau croisé dynamique ou à un rapport.The Hide blank members setting excludes blank members from the hierarchy when added to a PivotTable or report.

Durée estimée pour suivre cette leçon : 20 minutesEstimated time to complete this lesson: 20 minutes

PrérequisPrerequisites

Cet article de la leçon supplémentaire fait partie d’un didacticiel de modélisation tabulaire.This supplemental lesson article is part of a tabular modeling tutorial. Avant d’effectuer les tâches de cette leçon supplémentaire, vous devez avoir effectué toutes les leçons précédentes ou disposer d’un exemple de projet de modèle de ventes sur Internet Adventure Works.Before performing the tasks in this supplemental lesson, you should have completed all previous lessons or have a completed Adventure Works Internet Sales sample model project.

Si vous avez créé le projet de ventes sur Internet AW dans le cadre du didacticiel, votre modèle ne contient encore aucune donnée ou hiérarchie déséquilibrée.If you've created the AW Internet Sales project as part of the tutorial, your model does not yet contain any data or hierarchies that are ragged. Pour suivre cette leçon supplémentaire, vous devez d’abord créer le problème en ajoutant des tables supplémentaires, puis créer des relations, des colonnes calculées, une mesure et une hiérarchie d’organisation.To complete this supplemental lesson, you first have to create the problem by adding some additional tables, create relationships, calculated columns, a measure, and a new Organization hierarchy. Cette partie prend environ 15 minutes.That part takes about 15 minutes. Ensuite, vous allez résoudre le problème en quelques minutes.Then, you get to solve it in just a few minutes.

Ajouter des tables et des objetsAdd tables and objects

Pour ajouter de nouvelles tables à votre modèleTo add new tables to your model

  1. Dans l’Explorateur de modèles tabulaires, développez Sources de données, puis cliquez avec le bouton droit sur votre connexion > Importer de nouvelles tables.In Tabular Model Explorer, expand Data Sources, then right-click your connection > Import New Tables.

  2. Dans le navigateur, sélectionnez DimEmployee et FactResellerSales, puis cliquez sur OK.In Navigator, select DimEmployee and FactResellerSales, and then click OK.

  3. Dans l’éditeur de requête, cliquez sur Importer.In Query Editor, click Import

  4. Créez les relations suivantes :Create the following relationships:

    Table 1Table 1 ColonneColumn Direction du filtreFilter Direction Table 2Table 2 ColonneColumn ActifActive
    FactResellerSalesFactResellerSales OrderDateKeyOrderDateKey DefaultDefault DimDateDimDate DateDate OuiYes
    FactResellerSalesFactResellerSales DueDateDueDate DefaultDefault DimDateDimDate DateDate NonNo
    FactResellerSalesFactResellerSales ShipDateKeyShipDateKey DefaultDefault DimDateDimDate DateDate NonNo
    FactResellerSalesFactResellerSales ProductKeyProductKey DefaultDefault DimProductDimProduct ProductKeyProductKey OuiYes
    FactResellerSalesFactResellerSales EmployeeKeyEmployeeKey Vers les deux tablesTo Both Tables DimEmployeeDimEmployee EmployeeKeyEmployeeKey OuiYes
  5. Dans la table DimEmployee, créez les colonnes calculées suivantes :In the DimEmployee table, create the following calculated columns:

    Chemin d’accèsPath

    =PATH([EmployeeKey],[ParentEmployeeKey])
    

    FullNameFullName

    =[FirstName] & " " & [MiddleName] & " " & [LastName]
    

    Level1Level1

    =LOOKUPVALUE(DimEmployee[FullName],DimEmployee[EmployeeKey],PATHITEM([Path],1,1)) 
    

    D’isolement2Level2

    =LOOKUPVALUE(DimEmployee[FullName],DimEmployee[EmployeeKey],PATHITEM([Path],2,1)) 
    

    Level3Level3

    =LOOKUPVALUE(DimEmployee[FullName],DimEmployee[EmployeeKey],PATHITEM([Path],3,1)) 
    

    Level4Level4

    =LOOKUPVALUE(DimEmployee[FullName],DimEmployee[EmployeeKey],PATHITEM([Path],4,1)) 
    

    Level5Level5

    =LOOKUPVALUE(DimEmployee[FullName],DimEmployee[EmployeeKey],PATHITEM([Path],5,1)) 
    
  6. Dans la table DimEmployee, créez une hiérarchie nommée Organization.In the DimEmployee table, create a hierarchy named Organization. Ajoutez les colonnes suivantes, dans l’ordre : Level1, Level2, Level3, Level4, Level5.Add the following columns in-order: Level1, Level2, Level3, Level4, Level5.

  7. Dans la table FactResellerSales, créez la mesure suivante :In the FactResellerSales table, create the following measure:

    ResellerTotalSales:=SUM([SalesAmount])
    
  8. Utilisez Analyser dans Excel pour ouvrir Excel et créer automatiquement un tableau croisé dynamique.Use Analyze in Excel to open Excel and automatically create a PivotTable.

  9. Dans Champs de tableau croisé dynamique, ajoutez la hiérarchie Organization de la table DimEmployee à Lignes et la mesure ResellerTotalSales de la table FactResellerSales à Valeurs.In PivotTable Fields, add the Organization hierarchy from the DimEmployee table to Rows, and the ResellerTotalSales measure from the FactResellerSales table to Values.

    Capture d’écran d’une feuille de calcul avec la boîte de dialogue champs de tableau croisé dynamique affichée.

    Comme vous pouvez le voir dans le tableau croisé dynamique, la hiérarchie affiche les lignes qui sont déséquilibrées.As you can see in the PivotTable, the hierarchy displays rows that are ragged. Il y a de nombreuses lignes où des membres vides sont affichés.There are many rows where blank members are shown.

Pour corriger la hiérarchie déséquilibrée en définissant la propriété Masquer les membresTo fix the ragged hierarchy by setting the Hide members property

  1. Dans l’Explorateur de modèles tabulaires, développez Tables > DimEmployee > Hiérarchies > Organization.In Tabular Model Explorer, expand Tables > DimEmployee > Hierarchies > Organization.

  2. Dans Propriétés > Masquer les membres, sélectionnez Masquer les membres vides.In Properties > Hide Members, select Hide blank members.

    Capture d’écran de l’Fenêtre Propriétés avec une flèche pointant vers l’option Masquer les membres vides.

  3. De retour dans Excel, actualisez le tableau croisé dynamique.Back in Excel, refresh the PivotTable.

    Capture d’écran d’une hiérarchie d’employés sans membres vides.

    Voilà qui est beaucoup mieux !Now that looks a whole lot better!

Voir aussiSee Also

Leçon 9 : Créer des hiérarchiesLesson 9: Create hierarchies
Leçon supplémentaire-sécurité dynamiqueSupplemental Lesson - Dynamic security
Leçon supplémentaire-lignes de détailsSupplemental Lesson - Detail rows