我正在处理地理层次结构。我希望折线图或带状图上的图例能够根据切片器选择显示下一个最低相关细节级别。
目标: 没有切片器选择会生成区域图表(东南、东北等线)。从切片器中选择“东北”地区会生成州图表(缅因州、新罕布什尔州等线)。从切片器中选择“缅因”州会生成县图表,依此类推。
我可以使用 HASONEVALUE 和 VALUES 的组合在卡中执行此操作,以获得动态单个值。但是,功能区或折线图的图例字段不接受这种度量。
是否有任何方法可以根据切片器选择创建具有动态图例的 Power BI 线条或功能区图表?
我不想为所有层次结构节点创建单独的度量,因为可能有数千个叶子。
最佳答案
假设我有美国最大 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}
})
使用此数据作为查询编辑器中的源,我们将生成两个表。第一个是一个 Fact
表,它对年份进行逆透视,对于排名前三的县来说,如下所示:
第二个将是一个 Bridge
表,它只是唯一的 Region
、State
、County
组合的列表:
我们将使用 DAX 创建一个决赛 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)
)
确保在Rank
列上设置关系,以便您的关系图如下所示:
现在我们将编写一个度量,利用我们刚刚在 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]
,当切片器打开时,结果如下所示留空:
当我们选择一个地区,然后选择一个州时,我们会得到以下信息:
<小时/>这是我为此创建的 PBIX 文件的链接:Variable Legend.pbix
关于powerbi - Power BI 动态图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428727/