基于唯一ID列Column5移除Power Query中Column4重复值的方法
在Power Query中按唯一ID保留列的首个非重复值
要解决同一唯一ID(Column5)下Column4重复的问题,同时允许不同ID间Column4重复,不能用全局去重,得按ID分组后保留每组内的首个Column4值,再合并回原表。具体操作如下:
操作步骤(可视化界面)
- 生成分组表
在当前查询的最后一步之后,切换到「转换」选项卡,点击「分组依据」:
- 分组依据选择Column5(你的唯一ID列)
- 新列名设为「FirstColumn4」,操作选「第一行」,目标列选Column4
点击确定,此时会得到一张仅含Column5和对应首个Column4值的分组表。
- 生成分组表
- 合并分组表与原表
回到原查询的最后一步(不要覆盖之前的分组操作,在原步骤后新增步骤),点击「合并查询」→「合并查询作为新列」:
- 左表选当前查询,匹配列选Column5
- 右表选刚生成的分组表,匹配列同样选Column5
- 连接类型选「左外部」,确认后生成新的合并列。
- 合并分组表与原表
- 展开并替换(可选)
点击合并列右侧的展开按钮,只勾选「FirstColumn4」,取消「使用原始列名作为前缀」的勾选。如果需要用新值替换原Column4,右键点击「FirstColumn4」列,选择「重命名」改为「Column4」,再删除原来的Column4列即可。
- 展开并替换(可选)
直接编写M代码(更高效)
如果习惯用M代码,可在查询末尾直接添加自定义步骤,假设原最后一步名称为「PreviousStep」,代码如下:
let // 按ID分组,提取每组首个Column4值 GroupedTable = Table.Group(PreviousStep, {"Column5"}, {{"FirstColumn4", each List.First([Column4]), type any}}), // 左连接合并回原表 MergedTable = Table.NestedJoin(PreviousStep, {"Column5"}, GroupedTable, {"Column5"}, "GroupedData", JoinKind.LeftOuter), // 展开分组数据 ExpandedTable = Table.ExpandTableColumn(MergedTable, "GroupedData", {"FirstColumn4"}, {"FirstColumn4"}), // 替换原Column4(按需保留此步骤) FinalTable = Table.RenameColumns(ExpandedTable, {{"FirstColumn4", "Column4"}}) in FinalTable
这样处理后,每个Column5对应的Column4只会保留该ID下的第一个出现值,不同ID之间的Column4重复完全不受影响,不会被误删。
内容的提问来源于stack exchange,提问作者Kamosan
相关产品推荐
相关产品推荐

