web-dev-qa-db-ja.com

Power BIダイナミックレジェンド

私は地理的な階層で作業しています。折れ線グラフまたはリボングラフの凡例に、スライサーの選択に基づいて次に低い関連レベルの詳細を表示したいと思います。

GOAL: No Slicer Selectionは、地域チャート(南東、北東などのライン)を生成します。スライサーから「北東」地域を選択すると州チャートが生成されます(メイン州、ニューハンプシャー州の線など)。スライサーから「メイン」州を選択すると郡チャートが生成されます。

HASONEVALUEとVALUESの組み合わせを使用してカードでこれを実行し、動的な単一値を取得できます。ただし、リボンまたは折れ線グラフの凡例フィールドは、このようなメジャーを受け入れません。

スライサーの選択に基づいた動的な凡例でPower BI折れ線グラフまたはリボングラフを作成する方法はありますか?

数千のリーフが存在する可能性があるため、すべての階層ノードに対して個別のメジャーを作成することは避けたいです。

12
user9824134

次のように、米国の最大の20の郡の人口データがあるとします。

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}
       })

このデータをクエリエディタのソースとして使用して、2つのテーブルを作成します。 1つ目はFactテーブルで、これは年をピボット解除し、上位3つの郡について次のようになります。

Top 3 Counties

2番目は、一意のBridgeRegionStateの組み合わせのリストであるCountyテーブルになります。

Bridge Table

DAXを使用して1つの最終テーブルを作成します。これがLegendテーブルになります。

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

関係図が次のようになるように、Rank列に関係が設定されていることを確認します。

Relationship Diagram

ここで、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)

基本的に、適切なレベルの人口のみを表示します。

凡例ボックスにLegend[Region]があり、軸にFact[Year]がある折れ線グラフでこのメジャーを使用すると、スライサーが空白のままの場合、結果は次のようになります。

No Selections

リージョンを選択してから状態を選択すると、次の結果が得られます。

RegionState


これのために作成したPBIXファイルへのリンクを次に示します。 Variable Legend.pbix

6
Alexis Olson