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.
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:
La seconde sera une table Bridge
qui n'est qu'une liste de combinaisons uniques Region
, State
, County
:
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:
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:
Lorsque nous sélectionnons une région puis un état, nous obtenons ce qui suit:
Voici un lien vers le fichier PBIX que j'ai créé pour cela: Variable Legend.pbix