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

DAX计算问题:基于上一行计算值求电池剩余容量

修正DAX计算电池剩余容量的问题

原DAX的核心错误是直接累加所有历史ChargeVariation并截断到上限,而非基于上一步已经修正后的ResidualCapacity进行递推计算。这种逻辑会忽略中间步骤中因达到上限而被截断的数值,导致后续放电计算结果错误。

修正后的DAX代码

ResidualCapacity = 
VAR UpperBound = 80
VAR CurrentState = 'Table'[ChangeState]
-- 获取上一行的剩余容量,初始行无前置值时返回0
VAR PreviousResidual =
    CALCULATE(
        MAX('Table'[ResidualCapacity]),
        FILTER(
            'Table',
            'Table'[ChangeState] = CurrentState - 1
        )
    )
VAR CurrentValue = 
    IF(
        CurrentState = 1,
        -- 初始行:直接取充电量与上限的较小值
        MIN('Table'[ChargeVariation], UpperBound),
        -- 后续行:用上一行剩余容量加当前变化,再限制不超过上限
        MIN(PreviousResidual + 'Table'[ChargeVariation], UpperBound)
    )
RETURN
    CurrentValue

逻辑说明

  1. 初始行处理:当ChangeState=1时,直接将ChargeVariation与上限80取较小值,得到初始剩余容量。
  2. 递推计算:对于后续每一行,先获取上一行已计算完成的ResidualCapacity,加上当前的ChargeVariation后,再与上限80取较小值,确保结果不会超过上限。
  3. 正确性验证:以第5行为例,上一行剩余容量是70,加上当前-5得到65,小于80,最终返回65,符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:56:04