Power Query:按PPID分组筛选最新日期数据
Power Query 按PPID分组保留最新日期所有记录的解决方案
核心思路
先计算每个PPID组内的最大日期,再筛选出原表中日期等于组内最大日期的所有行,既能保留同一PPID下所有最新日期的记录,也能完整保留monthly、%AMI、%Pvty等所有列。
方法一:自定义列匹配最大日期
- 将数据导入Power Query编辑器,先确认日期列是「日期」类型(若不是,选中日期列→右键→更改类型→日期)。
- 添加自定义列计算每组最大日期:
- 点击「添加列」→「自定义列」,输入以下公式(替换占位符为你的实际内容):
示例:如果上一步骤是「源」,日期列叫「收入日期」,公式为:List.Max(Table.SelectRows(#"你的上一步骤名", (x) => x[PPID] = [PPID])[你的日期列名])List.Max(Table.SelectRows(源, (x) => x[PPID] = [PPID])[收入日期])
- 点击「添加列」→「自定义列」,输入以下公式(替换占位符为你的实际内容):
- 筛选符合条件的行:
- 点击自定义列的筛选器→选择「等于」→在下拉框中选择你的原日期列(比如「收入日期」),此时只会保留日期等于组内最大日期的行。
- 删除新增的自定义列,关闭并上载数据即可。
方法二:分组后合并匹配
- 导入数据到Power Query,确认日期列类型正确。
- 按PPID分组计算最大日期:
- 点击「转换」→「分组依据」,设置参数:
- 分组依据:
PPID - 新列名:
最新日期 - 操作:最大值
- 列:选择你的日期列
- 分组依据:
- 点击「转换」→「分组依据」,设置参数:
- 合并原表与分组表:
- 选中原表(比如「源」)→点击「合并查询」→「合并查询作为新查询」,选择刚分组得到的表,匹配列选
PPID,合并类型选「左外部」。
- 选中原表(比如「源」)→点击「合并查询」→「合并查询作为新查询」,选择刚分组得到的表,匹配列选
- 展开合并列:点击合并列右侧的展开按钮,仅勾选「最新日期」列。
- 筛选行:添加筛选条件,原日期列等于「最新日期」列。
- 删除「最新日期」列,关闭并上载数据。
为什么移除重复项无法满足需求
移除重复项的逻辑是保留每组匹配条件的第一条记录,如果同一PPID下有多个相同最新日期的记录,该方法会直接删除其他同日期的行,无法实现「保留所有最新日期记录」的要求。
内容的提问来源于stack exchange,提问作者Holly Szady
相关产品推荐
相关产品推荐

