DAX实现带切片器AND条件的DISTINCTCOUNT度量需求
Power BI切片器AND逻辑的DAX度量实现
原始数据结构
Question | Answer | User ------------------------------------- Favorite Color | Red | User_1 Favorite Color | Red | User_2 Favorite Color | Green | User_3 Hair Color | Ginger | User_1 Hair Color | Brown | User_2 Hair Color | Brown | User_3 Hair Color | Brown | User_4 Eye Color | Blue | User_1
基础度量结果
使用基础度量 Number = DISTINCTCOUNT(Strukturdaten[User]) 得到如下统计结果:
Question | Answer | Number --------------------------------------- Favorite Color | Red | 2 Favorite Color | Green | 1 Hair Color | Ginger | 1 Hair Color | Brown | 3 Eye Color | Blue | 1
需求说明
在Power BI报表中使用Question和Answer两个切片器时,默认筛选逻辑为OR,需改为AND逻辑:
- 示例筛选条件:Question选中
('Favorite Color', 'Hair Color')且 Answer选中('Red', 'Ginger') - 期望结果:统计同时满足「该用户有Favorite Color=Red的记录,且有Hair Color=Ginger的记录」的用户,结果应为1(仅User_1符合)
解决方案DAX度量
Number_And_Filter = VAR SelectedQs = VALUES(Strukturdaten[Question]) VAR SelectedAns = VALUES(Strukturdaten[Answer]) VAR ValidUsers = FILTER( VALUES(Strukturdaten[User]), // 验证用户拥有所有选中的Question对应的记录 COUNTROWS(INTERSECT(VALUES(Strukturdaten[Question]), SelectedQs)) = COUNTROWS(SelectedQs) && // 验证用户在选中Question下的Answer均属于选中的Answer集合 COUNTROWS( FILTER( RELATEDTABLE(Strukturdaten), [Question] IN SelectedQs && NOT([Answer] IN SelectedAns) ) ) = 0 ) RETURN COUNTROWS(ValidUsers)
度量逻辑说明
- 变量定义:
SelectedQs:获取切片器中选中的所有Question值SelectedAns:获取切片器中选中的所有Answer值
- 用户筛选:
- 第一条件:确保用户的Question记录覆盖所有选中的Question,即用户每个选中的Question都有对应记录
- 第二条件:确保用户在这些选中Question下的Answer全部属于切片器选中的Answer范围
- 结果返回:统计符合双重条件的用户数量
内容的提问来源于stack exchange,提问作者Johnny Spindler
相关产品推荐
相关产品推荐

