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

在DAX度量值中使用IF语句实现多条件卡路里计算

修复后的DAX卡路里度量值

你的原公式存在两个关键问题:

  • 语法错误:多IF的写法不符合DAX规范,需调整为嵌套结构或使用更简洁的SWITCH函数
  • 度量值逻辑错误:不能直接引用列值,必须通过迭代聚合函数(如SUMX)处理,因为度量值是基于筛选上下文计算的

以下是两种可行的正确写法:

方法1:使用SWITCH函数(推荐,可读性更强)

卡路里 = 
SUMX(
    'Nutrition',
    'Nutrition'[Grams] * 
    SWITCH(
        'Nutrition'[Macro],
        "Protein", 4,
        "Carbs", 4,
        "Fat", 9,
        0 // 处理匹配不到的异常值,可按需调整默认值
    )
)

方法2:使用嵌套IF函数

卡路里 = 
SUMX(
    'Nutrition',
    'Nutrition'[Grams] * 
    IF(
        'Nutrition'[Macro] = "Protein", 4,
        IF(
            'Nutrition'[Macro] = "Carbs", 4,
            IF(
                'Nutrition'[Macro] = "Fat", 9,
                0
            )
        )
    )
)

关键说明:

  • SUMX的作用是逐行遍历Nutrition表,判断每行的Macro类型、计算对应卡路里后再求和,完全适配度量值的上下文计算逻辑
  • 末尾的0用于处理Macro列出现非指定值的情况,可根据实际业务需求修改为其他默认值或移除(保留更稳妥)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:33