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

如何实现条件DAX度量:按Col1值选择SUMX的两种求和逻辑

正确DAX度量实现方案

原代码的核心问题是SWITCH的判断逻辑没放在行迭代上下文里,没法逐行识别Col1的值,导致计算逻辑失效。下面是修正后的实现:

最终可用的度量代码

自定义求和 = 
CALCULATE (
    SUMX (
        'myDF',
        IF (
            'myDF'[Col1] IN { "B0", "B1" },
            'myDF'[Amount],
            'myDF'[Amount] * 'myDF'[Rate]
        )
    ),
    KEEPFILTERS ( 'myDF'[Col2] = "Bla" )
)

代码逻辑说明

  • SUMX逐行计算:遍历myDF每一行,根据Col1的值决定该行的计算规则:
    • 当Col1为"B0"或"B1"时,直接取当前行的Amount值
    • 其他所有情况,计算当前行Amount与Rate的乘积
  • CALCULATE + KEEPFILTERS:一方面强制筛选Col2等于"Bla"的行,另一方面保留外部已有的Col2筛选条件(比如报表切片器选了Col2的其他值,会和这个条件取交集)

用SWITCH替代IF的等价写法

如果习惯用SWITCH,也可以写成:

自定义求和 = 
CALCULATE (
    SUMX (
        'myDF',
        SWITCH (
            TRUE (),
            'myDF'[Col1] = "B0" || 'myDF'[Col1] = "B1", 'myDF'[Amount],
            'myDF'[Amount] * 'myDF'[Rate]
        )
    ),
    KEEPFILTERS ( 'myDF'[Col2] = "Bla" )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:40:25