Power Query中按年份筛选Patch列最大值行及关联事实表时匹配最新Patch的方法
Power Query中按年份筛选Patch列最大值行及关联事实表时匹配最新Patch的方法
嗨,我来帮你搞定这两个Power Query的需求,分两种场景给你一步步说明:
一、直接筛选出每年Patch值最大的行
这里有两种常用方法,你可以选顺手的来:
方法1:分组+合并查询
- 先把你的原始数据导入Power Query(假设这个表叫「源数据」)
- 选中「Year」列,点击菜单栏的开始 > 分组依据,设置如下:
- 新列名:
Max Patch - 操作:选择「最大值」
- 列:选择「Patch」
点击确定后,你会得到一个只有Year和对应最大Patch的汇总表
- 新列名:
- 回到「源数据」表,点击开始 > 合并查询,选择刚才生成的汇总表作为合并对象,合并依据同时选「Year」和「Patch」列,合并类型选「仅匹配」
- 展开合并后的列,只保留你需要的字段(比如「Value」),最后删掉多余的「Max Patch」列,就得到你想要的结果了
方法2:添加自定义列筛选
- 在「源数据」表中,点击添加列 > 自定义列,输入以下公式:
这个公式的作用是,针对每一行,计算当前Year分组下的最大Patch值List.Max(Table.SelectRows(#"源数据", (x) => x[Year] = [Year])[Patch]) - 现在表中多了一个自定义列,筛选「Patch」列等于这个自定义列的行
- 最后删除这个自定义列,就完成了筛选
二、合并事实表时仅匹配对应年份的最新Patch
如果要把你的Patch表和事实表关联,只取对应年份的最新Patch数据,推荐先把Patch表处理成汇总表,再合并,效率更高:
- 按照上面第一种场景的方法,先把Patch表处理成「每年最新Patch的汇总表」(就是你想要的那3行结果)
- 打开你的事实表,点击开始 > 合并查询,选择刚才的汇总表作为合并对象,合并依据选「Year」列,合并类型选「仅匹配」或者「左外部」(根据你的需求)
- 展开合并后的列,就能把对应年份的最新Patch和Value数据带到事实表里了
如果不想提前处理汇总表,也可以直接合并后筛选:
- 把事实表和原始Patch表按「Year」列合并,选择「左外部」合并类型
- 展开合并后的所有列,然后添加自定义列计算当前Year的最大Patch值(和方法2的公式类似)
- 筛选展开的「Patch」列等于这个自定义列的值,最后删除多余列即可
备注:内容来源于stack exchange,提问作者AzUser1
相关产品推荐
相关产品推荐

