如何将Power BI切片器逻辑从OR改为AND以筛选符合多条件的Person ID
切片器多条件AND逻辑筛选Person ID全记录
原始数据如下:
| Person ID | Date | Day | AM/PM |
|---|---|---|---|
| 1 | 5/6/24 | Friday | am |
| 2 | 5/6/24 | Friday | pm |
| 2 | 8/6/24 | Monday | am |
| 3 | 5/6/24 | Friday | am |
| 4 | 8/6/24 | Monday | am |
当前切片器(基于Day+AM/PM组合)采用OR逻辑:选中「Friday PM」和「Monday AM」时,会返回满足任一条件的所有行,但我需要AND逻辑筛选——仅返回同时满足所有选中条件的Person ID的全部记录(比如选上述两个条件时,只返回ID2的两条数据),还要支持灵活切换不同筛选组合。
实现步骤(以Power BI为例)
1. 创建独立筛选条件表
先制作一个包含所有Day+AM/PM唯一组合的辅助表,作为切片器的数据源,不要和原始表建立关系。用DAX代码创建:
筛选条件表 = DISTINCT(SELECTCOLUMNS('原始表', "筛选组合", '原始表'[Day] & " " & '原始表'[AM/PM]))
2. 编写判断度量值
创建一个度量值,计算每个Person ID匹配的选中条件数量,判断是否等于选中的条件总数:
满足所有筛选条件 = VAR 选中条件数 = COUNTROWS(VALUES('筛选条件表'[筛选组合])) VAR 当前ID匹配数 = CALCULATE( DISTINCTCOUNT('原始表'[Day] & " " & '原始表'[AM/PM]), ALLEXCEPT('原始表', '原始表'[Person ID]) ) RETURN IF(选中条件数 = 当前ID匹配数, 1, 0)
3. 配置筛选规则
- 将「筛选条件表」中的「筛选组合」字段拖入切片器,设置为多选模式。
- 在显示原始数据的视觉对象(比如表格)的筛选器中,添加刚刚创建的「满足所有筛选条件」度量值,设置为等于
1。
完成以上设置后,切片器选中多个条件时,只会展示那些所有选中条件都覆盖到的Person ID的全部记录,完全符合需求。
内容的提问来源于stack exchange,提问作者AllanK
相关产品推荐
相关产品推荐

