DAX度量值开发求助:判断ID是否含多个切片器选中类型
解决方案
首先注意到你的需求描述(判断每个ID是否包含多个选中的Type)和给出的期望结果存在不一致,这里将基于你提供的期望结果推导逻辑并编写DAX度量值。
逻辑推导
当切片器选中B时,期望结果的判断规则为:
- 如果ID包含选中的Type,且存在至少2种未被选中的Type → 返回Yes
- 如果ID不包含选中的Type,但存在至少2种不同的Type → 返回Yes
- 其他情况 → 返回No
正确的DAX度量值
Measure_Outcome = VAR Current_ID = MAX('Table'[ID]) -- 获取当前ID的所有唯一Type集合 VAR ID_Unique_Types = CALCULATETABLE( VALUES('Table'[Type]), ALL('Table'), -- 清除当前行的Type上下文,获取该ID的所有Type 'Table'[ID] = Current_ID ) -- 获取切片器选中的所有Type VAR Selected_Types = VALUES(Sources[Type]) -- 计算当前ID中未被选中的Type数量 VAR Unselected_Type_Count = COUNTROWS(EXCEPT(ID_Unique_Types, Selected_Types)) -- 计算当前ID中选中的Type数量 VAR Selected_Type_Count = COUNTROWS(INTERSECT(ID_Unique_Types, Selected_Types)) RETURN IF( -- 满足两种Yes情况之一 (Selected_Type_Count > 0 && Unselected_Type_Count >= 2) || (Selected_Type_Count = 0 && COUNTROWS(ID_Unique_Types) >= 2), "Yes", "No" )
原始度量值的问题分析
你的原始度量值存在以下核心问题:
- 选中Type的获取错误:使用
MAX(Sources[Type])只能返回选中Type中的最大值,无法处理切片器选中多个Type的场景,应该用VALUES(Sources[Type])获取所有选中的Type集合。 - 逻辑不符合需求:仅判断了当前ID是否存在选中的Type,没有结合“多个Type”的判断逻辑,导致无法匹配你的期望结果。
- 统计维度错误:
COUNTROWS('Table')统计的是选中Type的出现行数,而非不同Type的数量,会像ID2中B出现两次的情况被误判。
内容的提问来源于stack exchange,提问作者Ryan Hare
相关产品推荐
相关产品推荐

