Power BI如何实现排他筛选 仅保留指定处理下响应达标化合物
Power BI 化合物排他筛选DAX实现方案
核心逻辑拆解
需求本质是两层筛选校验:
- 第一层:保留满足基础筛选规则的记录,即属于切片器选中的Treatment、Response值落在滑块设定区间
- 第二层:对记录所属的化合物做排他校验:该化合物在所有未被选中的Treatment下,不存在任何Response值落在当前设定区间的记录,否则直接剔除该化合物的所有结果
具体实现步骤
- 保留现有报表配置:不需要修改已有的Treatment复选框切片器、Response数值区间滑块切片器,也不需要对源数据做额外加工
- 新建DAX度量值,注意将代码中的
你的数据表名替换为实际的表名称:
排他筛选校验 = VAR _selectedTreat = ALLSELECTED('你的数据表名'[Treatment]) VAR _currentComp = SELECTEDVALUE('你的数据表名'[Compound]) VAR _invalidRecordCount = CALCULATE( COUNTROWS('你的数据表名'), // 清除Treatment切片器的筛选影响,保留Response滑块的筛选规则 ALLSELECTED('你的数据表名'[Treatment]), // 匹配当前化合物,筛选未被选中的Treatment '你的数据表名'[Compound] = _currentComp, NOT('你的数据表名'[Treatment] IN _selectedTreat), // 继承Response区间的筛选条件 ALLSELECTED('你的数据表名'[Response]) ) RETURN // 仅当存在Treatment选中、且无违规跨Treatment区间记录时返回1 IF(ISFILTERED('你的数据表名'[Treatment]) && _invalidRecordCount = 0, 1, 0)
- 打开结果展示用的表格/视觉对象的筛选面板,将新建的
排他筛选校验度量值拖入视觉级筛选器,设置筛选条件为显示项当值为 1,应用筛选即可。
效果验证
用提供的示例数据测试:
- 筛选条件设为Treatment=A、Response区间11-14时:
- 化合物1的未选中Treatment为B/C/D,对应Response值分别为8.25、9.22、10.50,均不在11-14区间,校验值为1,保留对应记录
- 化合物2的未选中Treatment为B/C/D,其中Treatment C的Response值12.63落在11-14区间,校验值为0,对应记录被剔除
- 最终仅返回化合物1对应Treatment A的记录,完全符合预期。
补充说明:该方案同时支持Treatment多选场景,比如同时选中A、B两个处理方式时,会自动校验C、D等未选中处理方式下的Response值,只要存在跨未选中Treatment的区间命中记录,就会排除对应化合物,不需要额外调整代码。
内容的提问来源于stack exchange,提问作者Em Rushworth
相关产品推荐
相关产品推荐

