首页 > 解决方案 > Power BI - 跨列查找和筛选重复项

问题描述

我有一组数据,其中四个单独的部件和部件号(所有文本)被编译成组合。它们可以以 2 种不同的方式组合:

我在两个单独的列中都有组合。

不幸的是,这会导致创建一些重复项,因为 A+B+C+D 在功能上(就我的目的而言)与 A+C+B+D 等效。当重复项在单个列中时,删除它们很简单。从不同的列中删除重复项有点棘手,这就是我寻求您帮助的地方。

例子

我已经模拟了一个项目如何连接的示例。如您所见,在同一列中没有重复项,但是在两列中都出现了相同组合的重复项(为简单起见采用颜色编码),并且通常在不同的数据行中,因此它不像查看那么简单行。我希望您能帮助识别这些并过滤(或删除)重复项。

Concat 1另外,请注意,和之间的关系Concat 2几乎没有意义(出于这些目的),除了我想过滤/删除任何重复值之外,无论这些重复值是在同一列内还是跨两列。

标签: powerbipowerquerympowerbi-desktop

解决方案


假设您从 Table1 开始,它有六列没有标题行,其中 5/6 列有两种组合,这将删除跨行和列的重复项。它不会删除自己行上的重复项 (ABBA/ABBA)

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Column1", "Column2", "Column3", "Column4"}, "Attribute", "Value"),
#"Removed Duplicates" = Table.Distinct(#"Unpivoted Other Columns", {"Value"}),
#"Pivoted Column" = Table.Pivot(#"Removed Duplicates", List.Distinct(#"Removed Duplicates"[Attribute]), "Attribute", "Value")
in #"Pivoted Column"

如果您还需要在自己的行上删除重复项,请改用:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Column1", "Column2", "Column3", "Column4"}, "Attribute", "Value"),
#"Removed Duplicates" = Table.Distinct(#"Unpivoted Other Columns", {"Value"}),
#"Pivoted Column" = Table.Pivot(#"Removed Duplicates", List.Distinct(#"Removed Duplicates"[Attribute]), "Attribute", "Value"),
#"Filtered Rows" = Table.SelectRows(#"Pivoted Column", each ([Column6] <> null) and ([Column5] <> null))
in #"Filtered Rows"

推荐阅读