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

Power BI创建DYNAMIC BALANCE度量值 正确计算支票簿动态余额

解决方案

前置准备

你首先需要在源表中新增一列自增行索引,确保要取的首行(2021/1/1 Dog Food对应行)的索引值为全表最小,可直接在Power Query中添加从0开始的索引列,列名设为RowIndex即可,解决同日期无法定位唯一首行的问题。

DAX度量值写法

DYNAMIC BALANCE = 
// 提取全表首行的初始余额
VAR InitialBalance = 
    CALCULATE(
        VALUES('表名'[BALANCE]),
        FILTER(ALL('表名'), '表名'[RowIndex] = MIN('表名'[RowIndex]))
    )
// 累计当前行之前(排除首行)的所有AMOUNT值
VAR CumulativeAmount = 
    CALCULATE(
        SUM('表名'[AMOUNT]),
        FILTER(
            ALLSELECTED('表名'),
            '表名'[RowIndex] > MIN('表名'[RowIndex])
            && '表名'[RowIndex] <= MAX('表名'[RowIndex])
        )
    )
RETURN
InitialBalance + CumulativeAmount

注意将代码中的表名替换为你实际的数据源表名称

计算验证

该逻辑完全匹配参考数据计算结果:

  • 首行索引为0时,累计AMOUNT为0,返回初始余额980.00
  • 第二行索引为1时,累计AMOUNT为-30.00,返回980-30=950.00
  • 后续行依次累加对应区间AMOUNT,最终结果和原表BALANCE列完全一致

若需使用计算列而非度量值,可直接使用以下写法

DYNAMIC BALANCE 计算列 = 
VAR InitialBal = CALCULATE(VALUES('表名'[BALANCE]), '表名'[RowIndex] = 0)
VAR CumAmt = CALCULATE(
    SUM('表名'[AMOUNT]),
    FILTER('表名', '表名'[RowIndex] > 0 && '表名'[RowIndex] <= EARLIER('表名'[RowIndex]))
)
RETURN InitialBal + CumAmt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:01