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

DAX公式异常:表格行值错误但卡片及总计正确,移除分支校验恢复正常

问题背景与现象

我有一段DAX代码,此前的问题已解决,代码如下:

totalAverageBaysFinalVersion = 
VAR onlyCampaignFiltered =
    (
        ISFILTERED ( 'Campaign Overview'[campaign] )
            && NOT CALCULATE (
                ISCROSSFILTERED ( 'range_plans' ),
                REMOVEFILTERS ( 'Campaign Overview'[campaign] )
            )
    )
        || ISFILTERED ( 'Calendar'[weekNumWeekCommence] )
RETURN
 SWITCH (
    TRUE(),
    SELECTEDVALUE('Campaign Overview'[branch_type]) = "IN STORE", --Here
        [totalRangePlanBays], --Here
 SELECTEDVALUE('Campaign Overview'[ranged_flag_in_words]) = "RANGED",
    [totalRangePlanBays],
        onlyCampaignFiltered,
      [totalRangePlanBays],
        [Total Avg Bays Campaign Overview]
    )

筛选range group时,表格行无法显示正确数值(应为114.49),但卡片视觉对象及表格总计数值正确。移除代码中标记here的分支类型校验部分后,问题消失。请问为何添加该校验会导致表格行值错误,移除后恢复正常?

原因分析

问题根源就在你加的SELECTEDVALUE('Campaign Overview'[branch_type]) = "IN STORE"这个分支判断:

  • 表格按range group分行展示时,每一行对应的上下文里,branch_type字段可能存在多个不同值。SELECTEDVALUE的特性是只有当上下文里该列是唯一值时才返回对应内容,否则返回空白。这时候空白和"IN STORE"不相等,第一个分支直接不触发。
  • 如果后续的ranged_flag_in_words和onlyCampaignFiltered条件也不满足,代码就会走到最后一个分支[Total Avg Bays Campaign Overview],自然就得到了错误的行值。
  • 而卡片或表格总计的上下文是整个筛选后的数据集,branch_type可能只有唯一值,SELECTEDVALUE能取到正确的"IN STORE",第一个分支正常触发,返回[totalRangePlanBays],所以数值是对的。
解决方案

如果要保留分支类型校验逻辑,得调整条件判断,适配多行上下文的场景:

  • 先判断branch_type是否唯一,再结合SELECTEDVALUE:
HASONEVALUE('Campaign Overview'[branch_type]) && SELECTEDVALUE('Campaign Overview'[branch_type]) = "IN STORE"
  • 或者判断当前range分组下是否存在IN STORE类型的分支(需根据数据模型调整):
CALCULATE(COUNTROWS(FILTER('Campaign Overview', 'Campaign Overview'[branch_type] = "IN STORE")), REMOVEFILTERS(range_group)) > 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:37:49