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

如何在Power BI中识别发生变更的记录及变更详情

在Power BI中实现每日提取数据的变更追踪

要识别每日Excel提取数据中的记录变更及明细,可按以下步骤操作:

1. 合并历史数据并添加时间戳

首先需要把文件夹中所有Excel文件的历史数据合并,并为每批次数据标记提取时间:

  • 加载文件夹数据:在Power Query编辑器中,选择「数据」>「获取数据」>「从文件」>「从文件夹」,导入存储Excel的文件夹路径。
  • 添加提取日期列:添加自定义列,使用文件的修改日期(或Excel内自带的提取日期字段)作为该批次数据的时间戳,命名为提取日期。
  • 合并所有文件内容:展开每个Excel文件的表格内容,确保保留唯一标识字段(如示例中的ID)、所有业务字段(姓名、部门、工资等)以及提取日期。

2. 分组获取每个记录的最新与历史版本

按唯一标识ID分组,筛选出每个记录的最新和上一次提取的数据,用于对比:

  • 按ID分组:在Power Query中使用「分组依据」功能,分组字段选ID,操作选「所有行」,生成包含每个ID所有历史记录的嵌套表。
  • 筛选最新两条记录:添加自定义列,对每个ID的历史记录按提取日期降序排序后取前2条,代码示例:
= Table.AddColumn(分组结果, "最新两条记录", each Table.FirstN(Table.Sort([历史记录],{{"提取日期", Order.Descending}}), 2))
  • 拆分新旧版本:展开嵌套表,将最新记录的字段命名为当前XX(如当前姓名、当前工资),历史记录的字段命名为历史XX(如历史姓名、历史工资),同时保留最新的提取日期。

3. 识别字段变更并生成明细

对比新旧版本的字段值,生成变更内容:

  • 添加变更判断列:对每个业务字段,添加自定义列判断是否发生变更,示例代码:
= Table.AddColumn(拆分后表格, "工资变更", each if [当前工资] <> [历史工资] then "工资: " & Text.From([历史工资]) & " → " & Text.From([当前工资]) else null)
= Table.AddColumn(上一步结果, "部门变更", each if [当前部门] <> [历史部门] then "部门: " & [历史部门] & " → " & [当前部门] else null)
  • 合并变更内容:添加自定义列,将所有非空的变更判断列合并为一条变更描述,示例:
= Table.AddColumn(上一步结果, "变更内容", each Text.Combine(List.RemoveNulls({[姓名变更], [部门变更], [工资变更]}), "; "))
  • 过滤无变更记录:筛选掉变更内容为空的行,只保留有变更的记录。

4. 整理最终输出格式

按需调整列顺序,保留ID、提取日期、变更内容以及变更前后的字段值,即可得到类似示例的变更追踪报表。

注意:若存在同一ID多次变更的情况,可扩展逻辑保留所有历史变更版本;若数据量较大,建议在Power Query中完成所有预处理,提升报表性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:22:37