Power Query应用转换操作后识别重复值时无法识别正确列名问题
问题原因
你报错的核心原因是#"Added Custom3"步骤中调用了Source[Merged.2.1.1],Source是你最开始导入的原始数据表,仅包含Custom.Column1、Custom、Custom.Column3、Custom.Column4、Custom.Column5这5个原始列,Merged.2.1.1是你经过合并、拆分等多步转换后才生成的新列,原始Source中不存在该列,因此触发列不存在的报错。
解决方案
场景1:只要值重复,所有该值的行都标记为duplicate,仅全表唯一的值标记为unique
将你的错误代码行直接替换为以下代码即可,只需将引用的数据源从原始Source改为当前要处理的#"Filtered Rows2":
#"Added Custom3" = Table.AddColumn(#"Filtered Rows2", "Custom.1", each if List.Count(List.FindText(#"Filtered Rows2"[Merged.2.1.1],[Merged.2.1.1]))>1 then "duplicate" else "unique")
修改后in后仍输出#"Added Custom3"即可。
场景2:符合你最初需求,首次出现的值标记为unique,后续重复出现的同值标记为duplicate
上述场景1的公式无法区分首次出现的行,只要值重复所有相关行都会标为duplicate,要实现按出现顺序标记的需求,将错误代码行替换为以下代码即可:
// 新增索引列定位行出现顺序 #"Added Index" = Table.AddIndexColumn(#"Filtered Rows2", "索引", 0, 1, Int64.Type), // 对比当前行索引与值第一次出现的索引,判断是否为首次出现 #"Added Custom3" = Table.AddColumn(#"Added Index", "Custom.1", (x)=> if List.PositionOf(#"Added Index"[Merged.2.1.1],x[Merged.2.1.1],Occurrence.First) = x[索引] then "unique" else "duplicate"), // 可选:删除不需要的辅助索引列 #"Removed Columns" = Table.RemoveColumns(#"Added Custom3",{"索引"})
修改后需要将in后的输出改为#"Removed Columns"。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

