Power Query:识别重复Unique ID并保留最新时间条目
Power Query 去重保留最新时间条目方案
原始数据集
| Unique ID | Date | Total |
|---|---|---|
| 1002 | 5/15/23 6:34 AM | 9.8 |
| 1007 | 5/15/23 6:28 AM | 6.7 |
| 1003 | 5/15/23 4:01 AM | 3.2 |
| 1009 | 5/15/23 3:16 AM | 4.4 |
| 1009 | 5/15/23 2:39 AM | 4.5 |
| 1001 | 5/15/23 12:59 AM | 9.9 |
| 1005 | 5/15/23 12:41 AM | 10 |
| 1004 | 5/15/23 12:29 AM | 7.8 |
| 1002 | 5/15/23 12:08 AM | 6.6 |
| 1009 | 5/17/23 5:40 PM | 7 |
需求目标
识别Unique ID列的重复值,仅保留每个ID对应Date列时间最新的条目。
可视化操作步骤
- 导入数据到Power Query:点击Excel「数据」选项卡→「从表格/区域」,选中原始数据表格导入。
- 设置日期类型:选中
Date列→「转换」选项卡→「数据类型」→选择「日期/时间」,确保时间可正确排序比较。 - 按Unique ID分组:点击「开始」选项卡→「分组依据」,分组列选择
Unique ID,新列名设为LatestEntry,操作选择「所有行」。 - 展开分组数据:点击
LatestEntry列右侧的展开按钮,仅勾选Date和Total,选择「展开到新行」。 - 标记最新时间条目:点击「添加列」选项卡→「自定义列」,输入公式:
该列会标记当前行是否为对应ID的最新时间条目。[Date] = List.Max(LatestEntry[Date]) - 筛选有效行:选中自定义列→点击筛选按钮→仅勾选
true,保留最新时间的条目。 - 清理冗余列:选中自定义列和
LatestEntry列→右键→「删除」。 - 导出结果:点击「关闭并上载」,将处理后的数据导出到Excel。
直接使用M代码
若想快速实现,打开Power Query编辑器后点击「高级编辑器」,替换原有代码为以下内容(注意将Table1替换为你的实际表格名称):
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Unique ID", Int64.Type}, {"Date", type datetime}, {"Total", type number}}), #"Grouped Rows" = Table.Group(#"Changed Type", {"Unique ID"}, {{"LatestEntry", each _, type table [Unique ID=Int64.Type, Date=datetime, Total=number]}}), #"Added Custom" = Table.AddColumn(#"Grouped Rows", "IsLatest", each [Date] = List.Max([LatestEntry][Date])), #"Expanded LatestEntry" = Table.ExpandTableColumn(#"Added Custom", "LatestEntry", {"Date", "Total"}, {"Date", "Total"}), #"Filtered Rows" = Table.SelectRows(#"Expanded LatestEntry", each [IsLatest] = true), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"IsLatest"}) in #"Removed Columns"
内容的提问来源于stack exchange,提问作者datadane
相关产品推荐
相关产品推荐

