You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"
    )

原始度量值的问题分析

你的原始度量值存在以下核心问题:

  1. 选中Type的获取错误:使用MAX(Sources[Type])只能返回选中Type中的最大值,无法处理切片器选中多个Type的场景,应该用VALUES(Sources[Type])获取所有选中的Type集合。
  2. 逻辑不符合需求:仅判断了当前ID是否存在选中的Type,没有结合“多个Type”的判断逻辑,导致无法匹配你的期望结果。
  3. 统计维度错误:COUNTROWS('Table')统计的是选中Type的出现行数,而非不同Type的数量,会像ID2中B出现两次的情况被误判。

内容的提问来源于stack exchange,提问作者Ryan Hare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:44:50