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

求助:如何在PowerBI/PowerQuery中实现当前行与前一行数值相减

在Power Query中实现当前行数值减去前一行数值的方法

前提说明

你的数据中「Id」是连续唯一编号,这刚好可以用来定位前一行数据,下面是具体实现步骤:

  1. 确保数据按Id升序排序

    • 打开Power Query编辑器,选中「Id」列,点击工具栏的「排序升序」按钮(避免因数据顺序错乱导致计算错误)
  2. 添加索引列(辅助定位前一行)

    • 切换到「添加列」选项卡,点击「索引列」→「从0开始」,这样每行都会得到一个从0开始的连续索引值
  3. 添加自定义差值列

    • 继续在「添加列」选项卡点击「自定义列」,在弹出的公式编辑框中输入以下代码(记得替换[数值列]为你实际要计算的列名):
      if [Index] = 0 then null else [数值列] - #"添加索引"[数值列]{[Index]-1}
      
    • 点击「确定」后,就会生成差值列:第一行因没有前一行,结果为null,后续每行都是当前行数值减去上一行数值

简化版方法(无需手动加索引)

如果你不想额外添加索引列,也可以直接用列表操作实现:

let
    源 = 你的数据源,
    按Id排序 = Table.Sort(源,{{"Id", Order.Ascending}}),
    数值列表 = 按Id排序[数值列],
    // 生成前一行数值的列表,第一行补null
    前一行数值 = {null} & List.RemoveLastN(数值列表, 1),
    // 合并原表和差值计算结果
    结果表 = Table.FromColumns(
        Table.ToColumns(按Id排序) & {List.Transform(List.Zip({数值列表, 前一行数值}), (x) => if x{1} = null then null else x{0} - x{1})},
        Table.ColumnNames(按Id排序) & {"差值"}
    )
in
    结果表

把代码中的你的数据源和数值列替换成实际内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:49:57