如何在Power BI中实现两行数据相减并展示下方行差值?
在Power BI中实现两行数据相减求差值的方法
方法一:用DAX创建计算列(适合固定行标识的场景)
假设你的表叫数据表格,有用来区分行的类别列(比如示例里的"Total"和"Used"),还有数值列:
- 先提取第一行的数值:
Total值 = CALCULATE(MAX('数据表格'[数值]), '数据表格'[类别] = "Total") - 再提取第二行的数值:
Used值 = CALCULATE(MAX('数据表格'[数值]), '数据表格'[类别] = "Used") - 最后计算差值:
差值 = '数据表格'[Total值] - '数据表格'[Used值] - 之后可以手动新增一行(通过「建模」→「输入数据」),把差值填进去,或者直接在视觉对象里展示这个差值列。
方法二:在Power Query里添加差值行
- 打开Power Query编辑器,选中你的数据集
- 复制这段代码到高级编辑器里(根据你的表名和列名调整):
let 源 = Excel.CurrentWorkbook(){[Name="数据表格"]}[Content], 筛选目标行 = Table.SelectRows(源, each ([类别] = "Total" or [类别] = "Used")), 提取数值列表 = Table.Column(筛选目标行, "数值"), 计算差值 = List.First(提取数值列表) - List.Last(提取数值列表), 新建差值行 = Table.FromRecords({[类别="差值", 数值=计算差值]}), 合并到原表 = Table.Combine({源, 新建差值行}) in 合并到原表
- 关闭并应用,数据集里就会多出一行差值数据。
方法三:用度量值动态展示差值(无需新增行)
如果只是要在可视化里显示差值,不用改原始数据,直接建度量值:差值度量值 = VAR TotalVal = CALCULATE(SUM('数据表格'[数值]), '数据表格'[类别] = "Total") VAR UsedVal = CALCULATE(SUM('数据表格'[数值]), '数据表格'[类别] = "Used") RETURN TotalVal - UsedVal
之后把这个度量值拖到卡片图、表格里就能直接看到结果。
如果你的行是按顺序排列的(比如上一行减下一行),可以用OFFSET函数定位相邻行,示例DAX:行差值 = VAR 当前值 = '数据表格'[数值] VAR 上一行值 = CALCULATE(MAX('数据表格'[数值]), OFFSET(-1, ALL('数据表格'[排序列]), ORDERBY('数据表格'[排序列], ASC))) RETURN 当前值 - 上一行值
这里的排序列是用来确定行顺序的列(比如日期、序号)。
内容的提问来源于stack exchange,提问作者aharwell
相关产品推荐
相关产品推荐

