如何实现Power BI切片器联动:基于集群国家匹配项目
需求与问题
我有一张事实表,需要对比不同项目的成本,项目按cluster(集群)和country(国家)分组。想要创建两个基于project(项目)列的切片器:
- 第一个切片器包含所有项目
- 选中第一个切片器的项目后,第二个切片器返回同集群同国家的项目
目前已能获取表中不同项目的成本,但联动筛选的需求还没实现。
已尝试的操作
创建了两个独立的切片器表,DAX代码如下:
slicer1 = SUMMARIZECOLUMNS(Facts_table[project],Facts_table[country],Facts_table[cluster]) slicer2 = SUMMARIZECOLUMNS(Facts_table[project],Facts_table[country],Facts_table[cluster])
同时创建了两个度量值,并在筛选窗格设置为“非空白”:
Slicer1 count = CALCULATE(COUNTROWS('Facts_table'),'Facts_table'[project] = SELECTEDVALUE('Slicer1'[project])) Slicer2 count = CALCULATE(COUNTROWS('Facts_table'),'Facts_table'[project] = SELECTEDVALUE('Slicer2'[project]))
事实表数据
| project | dept | cluster | country | cost |
|---|---|---|---|---|
| Project A | HR | 1 | France | 10830 |
| Project b | Logistics | 1 | Poland | 11841 |
| Project c | Product design | 2 | France | 11209 |
| Project d | Transport | 1 | Turkey | 6814 |
| Project e | HR | 1 | UK | 9881 |
| Project f | Logistics | 2 | Poland | 9804 |
| Project g | Product design | 2 | Turkey | 10460 |
| Project g | Transport | 2 | France | 5486 |
| Project h | HR | 1 | Poland | 6960 |
| Project j | Logistics | 2 | France | 11098 |
| Project i | Product design | 3 | Turkey | 12276 |
| Project k | Transport | 3 | UK | 7614 |
| Project f | HR | 1 | Poland | 6039 |
| Project n | Logistics | 2 | Turkey | 6285 |
| Project m | Product design | 1 | Turkey | 8732 |
解决方案
步骤1:创建统一的项目维度表
不需要两个独立的切片器表,创建一个包含唯一项目及对应属性的维度表即可,且不要和事实表建立关系,避免自动筛选干扰:
Project_Dim = SUMMARIZE( Facts_table, Facts_table[project], Facts_table[cluster], Facts_table[country] )
步骤2:编写切片器联动的控制度量值
删除原有Slicer2 count,替换为以下度量值,用来控制第二个切片器的显示内容:
Slicer2_Valid = VAR SelectedCluster = SELECTEDVALUE(Project_Dim[cluster]) VAR SelectedCountry = SELECTEDVALUE(Project_Dim[country]) RETURN IF( ISBLANK(SelectedCluster), 1, // 未选项目时显示所有项目 CALCULATE( COUNTROWS(Project_Dim), Project_Dim[cluster] = SelectedCluster, Project_Dim[country] = SelectedCountry, Project_Dim[project] <> SELECTEDVALUE(Project_Dim[project]) // 可选:排除已选中的项目 ) )
步骤3:配置切片器筛选
- 第一个切片器使用
Project_Dim[project]字段 - 第二个切片器同样使用
Project_Dim[project]字段,在筛选窗格添加条件:Slicer2_Valid不为空白
步骤4:创建成本计算度量值
为了正确计算选中项目的成本,避免切片器筛选冲突,创建以下度量值:
Selected_Project_Cost = CALCULATE( SUM(Facts_table[cost]), TREATAS( VALUES(Project_Dim[project]), Facts_table[project] ) )
完成以上设置后,选中第一个切片器的项目时,第二个切片器会自动展示同集群同国家的项目,同时可通过Selected_Project_Cost查看对应项目的总成本。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

