如何创建不影响层级条形图的Power BI列名切片器
问题描述
我有如下数据表格:
| Quarter | Month | Status | Debit | Digital | Internal | IVT | Risk |
|---|---|---|---|---|---|---|---|
| Q1 | Jan'22 | Plan | 57 | 92 | 33 | 9 | 60 |
| Q1 | Jan'22 | Actuals | 46 | 92 | 33 | 9 | 60 |
| Q1 | Feb'22 | Plan | 58 | 72 | 36 | 8 | 65 |
| Q1 | Feb'22 | Actuals | 50 | 72 | 37 | 8 | 65 |
| Q1 | Mar'22 | Plan | 71 | 28 | 30 | 22 | 2 |
| Q1 | Mar'22 | Actuals | 44 | 28 | 29 | 22 | 2 |
我要基于这些数据创建层级条形图,同时需要做一个基于列名(Digital、Debit等)的切片器/下拉筛选器,要求这个筛选器能控制条形图展示的数值列,但目前我创建了如下度量值后,选择切片器选项条形图没变化:
Parameter = { ("Digital", NAMEOF('Power BI Fact Table'[Digital]), 0), ("Debit", NAMEOF('Power BI Fact Table'[Debit]), 1), ("Internal", NAMEOF('Power BI Fact Table'[Internal]), 2), ("IVT", NAMEOF('Power BI Fact Table'[IVT]), 3), ("Risk", NAMEOF('Power BI Fact Table'[Risk]), 4) }
请问该怎么实现需求?
解决方案
你目前只创建了参数表的定义,但没有把参数选择和条形图的数值展示关联起来,需要补充以下步骤:
将参数转为独立表
把你写的Parameter代码改成新建表(而非度量值),生成一个独立的筛选表。创建完成后,给表的列重命名,比如第一列叫显示名称,第二列叫列名,第三列叫排序ID,方便后续操作。创建动态度量值关联参数选择
新建一个度量值,根据参数表的选中项,返回对应数据列的数值:动态数值 = VAR SelectedColumn = SELECTEDVALUE('Parameter'[列名]) RETURN SWITCH( SelectedColumn, NAMEOF('Power BI Fact Table'[Digital]), SUM('Power BI Fact Table'[Digital]), NAMEOF('Power BI Fact Table'[Debit]), SUM('Power BI Fact Table'[Debit]), NAMEOF('Power BI Fact Table'[Internal]), SUM('Power BI Fact Table'[Internal]), NAMEOF('Power BI Fact Table'[IVT]), SUM('Power BI Fact Table'[IVT]), NAMEOF('Power BI Fact Table'[Risk]), SUM('Power BI Fact Table'[Risk]), BLANK() )注:如果你的数据不需要求和(比如单条记录的数值),可以把
SUM换成MAX,或者直接引用列(但建议用聚合函数避免上下文计算问题)。配置切片器和条形图
- 把参数表的
显示名称字段拖到切片器控件中,作为筛选选项。 - 层级条形图的值区域,替换为刚创建的
动态数值度量值;类别轴保持原有的层级结构(比如Quarter > Month > Status)。
- 把参数表的
可选:优化参数排序
给参数表的显示名称列设置排序依据为排序ID,这样切片器里的选项会按你定义的顺序排列,更符合使用习惯。
完成以上操作后,选择切片器里的不同列名,条形图就会自动切换展示对应列的数值了。
内容的提问来源于stack exchange,提问作者user20019924
相关产品推荐
相关产品推荐

