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

如何用DAX按账户(acc.num)和期间计算余额的行级差异?

问题描述

现有如下数据表格:

acc.numBalancePeriod
12342001
23453001
12343002
23452002

需求:使用DAX按每个账户编号(acc.num)计算不同期间的余额行级差异,例如账户1234的期间2余额300减去期间1余额200,结果为100。

尝试过将表按期间拆分,但不知道如何按行实现该计算。

DAX解决方案

方法1:添加计算列

如果需要在原表中直接新增一列显示余额差异,可使用LOOKUPVALUE函数实现,写法简洁直接:

余额差异 = 
VAR 当前期间 = '你的表名'[Period]
VAR 上一期间余额 = 
    LOOKUPVALUE(
        '你的表名'[Balance],
        '你的表名'[acc.num], '你的表名'[acc.num],
        '你的表名'[Period], 当前期间 - 1
    )
RETURN
    '你的表名'[Balance] - 上一期间余额
  • 逻辑:先获取当前行的期间值,再匹配同一账户下上一期间的余额,最后用当前余额减去上一期间余额得到差异;期间1的行会返回空白(无对应上一期间数据)

方法2:创建度量值(适配报表可视化)

如果是在Power BI报表中动态计算差异,推荐使用度量值,适配筛选上下文变化:

余额差异_度量值 = 
VAR 当前期间 = SELECTEDVALUE('你的表名'[Period])
VAR 上一期间余额 = 
    CALCULATE(
        SUM('你的表名'[Balance]),
        ALLEXCEPT('你的表名', '你的表名'[acc.num]),
        '你的表名'[Period] = 当前期间 - 1
    )
RETURN
    SUM('你的表名'[Balance]) - 上一期间余额
  • 逻辑:SELECTEDVALUE获取当前报表上下文的期间值,ALLEXCEPT保留账户筛选条件的同时移除其他筛选,精准定位同一账户的上一期间余额,最后计算差值

最终效果示例

添加计算列后,表格会更新为:

acc.numBalancePeriod余额差异
12342001空白
23453001空白
12343002100
23452002-100

内容的提问来源于stack exchange,提问作者LUIS E BAERGA-GONZALEZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:30:51