Power BI中基于DAX度量值实现切片器关联列筛选的问题
解决Power BI切片器按姓名关联同项目人员的问题
原度量值的问题
你写的度量值存在两处关键逻辑错误:
- 用
MAX()包裹CALCULATETABLE()无效,CALCULATETABLE()返回的是表对象,MAX()无法直接处理表类型数据 ALL('General info'[Name])会清除姓名的筛选上下文,导致SELECTEDVALUE('General info'[Sport])无法正确获取选中姓名对应的运动项目
正确解决方案
创建如下DAX度量值,用它控制表格的显示逻辑:
同项目筛选 = VAR 选中项目 = CALCULATE( MAX('General info'[Sport]), ALLSELECTED('General info'[Name]) ) RETURN IF( HASONEVALUE('General info'[Name]), IF(MAX('General info'[Sport]) = 选中项目, 1, 0), 1 )
使用步骤
- 将上述度量值添加到数据模型中
- 选中需要筛选的表格,打开右侧「筛选器」面板
- 把「同项目筛选」度量值添加到筛选器,设置筛选条件为值等于1
- 测试效果:切片器选中单个姓名时,表格自动显示所有从事相同运动项目的人员;未选中任何姓名时,表格显示全部数据
逻辑说明
ALLSELECTED('General info'[Name])保留切片器的姓名筛选上下文,确保能正确提取选中姓名对应的运动项目- 内层
IF判断当前行的运动项目是否和选中项目一致,一致返回1,否则返回0 - 外层
IF处理未选中姓名的情况,返回1以显示全部数据
内容的提问来源于stack exchange,提问作者Jason Odongo
相关产品推荐
相关产品推荐

