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

无需SUMX函数,基于Check Month Wise筛选23 Qty Blank度量值

问题描述

现有DAX度量值Check Month Wise用于判断数量状态:

Check Month Wise = IF(ISBLANK([23 Qty]),"D",IF(ISBLANK([22 Qty]),"N","V"))

尝试编写度量值23 Qty Blank,实现仅在Check Month Wise = "V"时返回[23 Qty],否则返回0:

23 Qty Blank = IF( [Check Month Wise] = "V", [23 Qty], 0 )

但该度量值仅在PAC ITEM CODE明细层级生效,小计/汇总层级无法得到正确结果。已知使用SUMX可实现需求,需不依赖SUMX完成筛选逻辑。

解决方案

核心原因分析

原度量值在汇总层级失效,是因为[Check Month Wise]在汇总上下文里是基于整个组的计算结果(而非逐行判断后汇总)。若组内存在部分行不符合"V"条件,汇总后的Check Month Wise结果会非"V",导致整个组返回0,不符合逐行筛选再汇总的需求。

替代DAX代码

写法一:直接基于条件筛选(推荐)

由于Check Month Wise = "V"等价于[23 Qty]和[22 Qty]均不为空,可直接将该条件整合到筛选逻辑中:

23 Qty Blank = 
CALCULATE(
    [23 Qty],
    KEEPFILTERS(
        NOT(ISBLANK([23 Qty])) && NOT(ISBLANK([22 Qty]))
    )
) + 0
  • CALCULATE:通过上下文转换,将筛选条件应用到每个明细行层面,再汇总符合条件的[23 Qty]。
  • KEEPFILTERS:保留当前筛选上下文(如页面、切片器的筛选),避免CALCULATE清除原有筛选规则。
  • + 0:确保无符合条件的行时返回0而非空白值,匹配原需求逻辑。

写法二:复用Check Month Wise逻辑

如果希望直接复用现有Check Month Wise的判断规则,可通过FILTER锁定当前上下文的明细行:

23 Qty Blank = 
CALCULATE(
    SUM('YourTable'[23 Qty Column]), -- 替换为存储23 Qty的基础列
    FILTER(
        ALLSELECTED('YourTable'[PAC ITEM CODE]),
        [Check Month Wise] = "V"
    )
)
  • 需将'YourTable'[23 Qty Column]替换为实际存储23 Qty数值的基础列(若[23 Qty]是求和度量,直接使用基础列求和更高效)。
  • ALLSELECTED('YourTable'[PAC ITEM CODE])确保筛选范围是当前上下文可见的所有PAC ITEM CODE明细行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:00:55