web-dev-qa-db-fra.com

Légende dynamique Power BI

Je travaille avec une hiérarchie géographique. J'aimerais que la légende sur mon graphique en ligne ou en ruban montre le niveau de détail pertinent le plus bas suivant en fonction d'une sélection de tranche.

BUT: Aucune sélection de tranche ne donne un graphique régional (lignes pour le sud-est, le nord-est, etc.). Sélectionnez la région "Nord-Est" de Slicer donne un graphique d'état (lignes pour le Maine, le New Hampshire, etc.) Sélectionnez l'état "Maine" de Slicer donne un graphique du comté, et ainsi de suite.

Je peux le faire dans une carte en utilisant une combinaison de HASONEVALUE et VALUES pour obtenir une valeur unique dynamique. Cependant, le champ Légende des graphiques en ruban ou en ligne n'acceptera pas une telle mesure.

Existe-t-il un moyen de créer un graphique en ligne ou à ruban Power BI avec une légende dynamique basée sur la sélection de tranches?

Je préfère ne pas créer de mesure distincte pour tous les nœuds de hiérarchie car il existe des milliers de feuilles possibles.

12
user9824134

Disons que j'ai quelques données sur la population des 20 plus grands comtés américains comme suit:

Data = DATATABLE(
       "Rank", INTEGER, "Region", STRING, "County", STRING, "State", STRING,
       "2010", INTEGER, "2012", INTEGER, "2014", INTEGER,
       {{1,"West","Los Angeles","California",9818605,9826773,9826773},
        {2,"Midwest","Cook","Illinois",5194675,5199971,5199971},
        {3,"South","Harris","Texas",4092459,4109362,4109362},
        {4,"South","Maricopa","Arizona",3817117,3824834,3824834},
        {5,"West","San Diego","California",3095313,3105115,3105115},
        {6,"West","Orange","California",3010232,3017598,3017598},
        {7,"South","Miami-Dade","Florida",2496435,2503034,2503034},
        {8,"Northeast","Kings","New York",2504700,2508515,2508515},
        {9,"South","Dallas","Texas",2368139,2375207,2375207},
        {10,"Northeast","Queens","New York",2230722,2233895,2233895},
        {11,"West","Riverside","California",2189641,2202978,2202978},
        {12,"West","San Bernardino","California",2035210,2042027,2042027},
        {13,"West","King","Washington",1931249,1937157,1937157},
        {14,"West","Clark","Nevada",1951269,1953927,1953927},
        {15,"South","Tarrant","Texas",1809034,1816850,1816850},
        {16,"West","Santa Clara","California",1781642,1786267,1786267},
        {17,"South","Broward","Florida",1748066,1752122,1752122},
        {18,"South","Bexar","Texas",1714773,1723561,1723561},
        {19,"Midwest","Wayne","Michigan",1820584,1815246,1815246},
        {20,"Northeast","New York","New York",1585873,1587481,1587481}
       })

En utilisant ces données comme source dans l'éditeur de requêtes, nous produirons deux tableaux. Le premier sera un tableau Fact qui décale les années et ressemble à ceci pour les trois premiers comtés:

Top 3 Counties

La seconde sera une table Bridge qui n'est qu'une liste de combinaisons uniques Region, State, County:

Bridge Table

Nous allons créer une table finale en utilisant DAX. Ce sera notre table Legend.

Legend = UNION(SUMMARIZECOLUMNS(Fact[Region], Fact[Rank], "Level", 1),
             SUMMARIZECOLUMNS(Fact[State], Fact[Rank],  "Level", 2),
             SUMMARIZECOLUMNS(Fact[County], Fact[Rank],  "Level", 3)
             )

Assurez-vous que les relations sont définies sur les colonnes Rank afin que votre diagramme de relations ressemble à ceci:

Relationship Diagram

Nous allons maintenant écrire une mesure qui tire parti de ces niveaux que nous venons de créer dans la table Legend.

Measure = 
    VAR StateCount = CALCULATE(DISTINCTCOUNT(Bridge[State]),
                         ALLSELECTED(Bridge), ALLSELECTED(Legend))
    VAR RegionCount = CALCULATE(DISTINCTCOUNT(Bridge[Region]),
                          ALLSELECTED(Bridge), ALLSELECTED(Legend))
    VAR LevelNumber = SWITCH(TRUE(), StateCount = 1, 3, RegionCount = 1, 2, 1)
    RETURN CALCULATE(SUM(Fact[Population]), Legend[Level] = LevelNumber)

Fondamentalement, nous voulons seulement montrer la population au niveau approprié.

Utilisation de cette mesure sur un graphique linéaire avec Legend[Region] dans la zone de légende et Fact[Year] sur l'axe, le résultat ressemble à ceci lorsque les tranches sont laissées vides:

No Selections

Lorsque nous sélectionnons une région puis un état, nous obtenons ce qui suit:

RegionState


Voici un lien vers le fichier PBIX que j'ai créé pour cela: Variable Legend.pbix

6
Alexis Olson