PowerBI中使用OR逻辑而非默认AND逻辑筛选表格视觉对象
实现独立切片器多条件“或”筛选的DAX解决方案
问题背景
现有Sample_Table表包含Name和ID列,需要通过两个独立的切片器(分别基于Sample_Names和Sample_IDs,已关闭与原表的交互)实现:选中任意切片器的条件时,返回匹配任一条件的行(比如选"Anna"和ID"2",返回Anna和Bob的行)。之前用SELECTEDVALUE获取切片器值时无数据返回,硬编码值则正常。
核心原因
SELECTEDVALUE仅能返回切片器的单个选中值,多选时会返回空白;同时因为切片器表与原表无关联,无法直接通过上下文传递筛选值,必须用ALLSELECTED获取切片器的所有选中项集合。
可行实现方案
方案1:创建筛选后的计算表
直接生成符合条件的结果表,可用于可视化展示:
Filtered_Table = VAR Selected_Names = ALLSELECTED(Sample_Names[Name]) VAR Selected_IDs = ALLSELECTED(Sample_IDs[ID]) RETURN CALCULATETABLE( Sample_Table, OR( Sample_Table[Name] IN Selected_Names, Sample_Table[ID] IN Selected_IDs ) )
ALLSELECTED(Sample_Names[Name]):获取名称切片器中所有选中的名称集合ALLSELECTED(Sample_IDs[ID]):获取ID切片器中所有选中的ID集合OR(...):判断原表行是否匹配任一切片器的筛选条件
方案2:用度量值标记符合条件的行
如果需要基于原表进行可视化,可创建度量值标记匹配行,再筛选标记为1的行:
Is_Matched = VAR Selected_Names = ALLSELECTED(Sample_Names[Name]) VAR Selected_IDs = ALLSELECTED(Sample_IDs[ID]) RETURN IF( OR( SELECTEDVALUE(Sample_Table[Name]) IN Selected_Names, SELECTEDVALUE(Sample_Table[ID]) IN Selected_IDs ), 1, 0 )
用法:将该度量值添加到可视化表中,设置筛选条件Is_Matched = 1即可。
验证效果
当选中名称"Anna"和ID"2"时,Selected_Names为{"Anna"},Selected_IDs为{2},Sample_Table中所有Name=Anna或ID=2的行都会被筛选出来,符合需求。
内容的提问来源于stack exchange,提问作者SequelSnake
相关产品推荐
相关产品推荐

