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

DAX中含IF逻辑的当期与上期(季度)差值计算问题求助

修正DAX季度差值计算问题

需求与问题

  • 计算规则:
    1. 当Value<>0时,差值 = 当期Value - 上一季度Value
    2. 当Value=0(Sale场景)时,差值 = 当期Sale - 上一季度Value
  • 异常情况:第一部分逻辑正常,但Sale场景下仅显示当期Sale值,未正确减去上季度Value

当前使用的DAX公式

Calculate =
IF (
    SUM ( 'Append'[Value] ) <> 0,
    SUM ( 'Append'[Value] )
        - CALCULATE (
            SUM ( 'Append'[Value] ),
            PARALLELPERIOD ( 'Append'[DATE_REFERENCE], -1, QUARTER )
        ),
    CALCULATE ( SUM ( Append[Sale] ), KEEPFILTERS ( 'Append'[Status] = "Sale" ) )
        - CALCULATE (
            SUM ( 'Append'[Value] ),
            PARALLELPERIOD ( 'Append'[DATE_REFERENCE], -1, QUARTER )
        )
)

结果对比

当前结果

代码参考日期状态销售额数值计算值
3031/12/2023Value0756527-
3031/03/2024Value0756527-
3030/06/2024Value081517358646
3131/12/2023Value0557133-
3131/03/2024Sale-4750000-475000
3130/06/2024Value00-
3231/12/2023Value0351873-
3231/03/2024Value0351873-
3230/06/2024Sale-3000000-300000

预期结果

代码参考日期状态销售额数值计算值
3031/12/2023Value0756527-
3031/03/2024Value0756527-
3030/06/2024Value081517358646
3131/12/2023Value0557133-
3131/03/2024Sale-475000082133
3130/06/2024Value00-
3231/12/2023Value0351873-
3231/03/2024Value0351873-
3230/06/2024Sale-300000051873

问题原因与修正方案

原因分析

Sale场景下,当前行的Status = "Sale"筛选会被传递到计算上季度Value的CALCULATE中,而上季度对应的是Status = "Value"的记录,导致该CALCULATE返回0,最终差值等于当期Sale值。

修正后的DAX公式

Calculate =
VAR CurrentValue = SUM('Append'[Value])
VAR PreviousValue = CALCULATE(
    SUM('Append'[Value]),
    PARALLELPERIOD('Append'[DATE_REFERENCE], -1, QUARTER),
    REMOVEFILTERS('Append'[Status]) -- 清除Status筛选,确保取到上季度的Value记录
)
VAR CurrentSale = CALCULATE(SUM('Append'[Sale]), KEEPFILTERS('Append'[Status] = "Sale"))
RETURN
IF(
    CurrentValue <> 0,
    CurrentValue - PreviousValue,
    IF(ISBLANK(PreviousValue), BLANK(), CurrentSale - PreviousValue) -- 无上期值时返回空
)

关键修改点

  1. 用变量封装各部分计算,提升可读性
  2. 在计算PreviousValue时添加REMOVEFILTERS('Append'[Status]),清除当前行的Status筛选,确保能正确获取上季度的Value数据
  3. 增加判断:如果上期值为空(无对应记录),返回空值,保持与其他无上期数据的行一致

验证结果

  • 代码31的2024年3月期:-475000 - (-557133) = 82133,与预期一致
  • 代码32的2024年6月期:-300000 - (-351873) = 51873,与预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:41:02