PowerBI技术问题:同表内基于筛选结果的双重过滤需求实现
PowerBI同表双重过滤解决方案
问题梳理
现有两张表:
Table 1:
| Parent | Name | Code |
|---|---|---|
| Parent 1 | Name 1 | Code 1 |
| Parent 2 | Name 2 | Code 2 |
| Parent 1 | Name 3 | Code 3 |
| Parent 3 | Name 4 | Code 4 |
Table 2:
| Name |
|---|
| Name 1 |
| Name 2 |
| Name 3 |
需求:先匹配Table 2的Name值(已设置Name筛选器),再获取这些Name对应的Parent值,最终筛选出Table 1中所有属于这些Parent的行。例如选中Name 1时,需返回Table 1中所有Parent为Parent 1的两行数据。
实现方法
方法一:创建计算表
通过DAX创建一张动态更新的计算表,自动完成双重筛选:
Filtered_Table = VAR SelectedNames = VALUES(Table2[Name]) VAR TargetParents = CALCULATETABLE( VALUES(Table1[Parent]), Table1[Name] IN SelectedNames ) RETURN CALCULATETABLE( Table1, Table1[Parent] IN TargetParents )
SelectedNames:提取Table 2中所有需要匹配的Name值(若使用切片器手动筛选Name,可替换为VALUES(Table1[Name]))TargetParents:获取选中Name对应的所有Parent集合- 最终返回Table 1中Parent属于该集合的全部行
方法二:用度量值实现动态筛选
若不想创建新表,可编写度量值配合可视化筛选:
IsQualifiedRow = VAR SelectedNames = VALUES(Table2[Name]) VAR CurrentRowParent = SELECTEDVALUE(Table1[Parent]) VAR TargetParents = CALCULATETABLE( VALUES(Table1[Parent]), Table1[Name] IN SelectedNames ) RETURN IF(CurrentRowParent IN TargetParents, 1, 0)
使用步骤:
- 将该度量值添加到可视化表格的字段列表中
- 打开表格的筛选器面板,添加
IsQualifiedRow,设置筛选条件为等于1 - 此时表格会自动根据选中的Name,动态显示对应Parent下的所有行
内容的提问来源于stack exchange,提问作者TRG
相关产品推荐
相关产品推荐

