Power Query - 根据唯一 ID 合并数据行

Power Query - Merging rows of data based on unique ID

我遇到了一个与详细 here 类似的问题,我正在使用 pivot-unpivot 解决方案,到目前为止效果很好。不过我的数据比较复杂,因为它是从多个来源提取的,所以有时会有不一致的值。

本质上 - 在应用 pivot/unpivot 之后,分组工作得很好,但我最终遇到了很多错误。它们看起来都一样:

Expression.Error: There were too many elements in the enumeration to complete the operation.

Details: List

为了解决这个问题,我在 Pivot.Column 命令中添加了第 5 个参数: each Text.Combine(_, "#(lf)")

这会导致显示组合值的错误。但是,有时显示的值会完全相同。我怎样才能让这些实际合并,同时只在具有差异数据的单元格中显示 error/cell 值?我是 power query 的新手,不确定是否有比“Text.combine”

更好的解决方案

下面是一些示例...感谢您的帮助

合并后的 table 看起来像:

Unique ID Data A Data B Data C
ABC 123 789 null
ABC 123 null name2
BCD 234 null null
BCD null null null
BCD 1234 null name2
EFG 333 222 name1
EFG null 222 null
ABC null null null

以下pivot/unpivot与文本合并(我不知道如何在这里显示换行符,所以用逗号划定):

Unique ID Data A Data B Data C
ABC 123, 123 789 name2
BCD 234, 1234 null name2
EGF 333 222, 222 name1

我想要的:

Unique ID Data A Data B Data C
ABC 123 789 name2
BCD 234, 1234 null name2
EGF 333 222 name1

BCD 的数据 A 点会出错,所以我可以看到源数据中有一些东西需要修复 tables。

右键单击 UniqueID 列并逆透视其他列

转换 .. 数据类型 ... 3 列的文本

单击 select 所有 3 列,右键单击,删除重复项

单击 select 唯一 ID 和属性列,右键单击,分组依据...保留默认选项,单击确定

在公式栏中更改分组公式的结尾

来自

each Table.RowCount(_), Int64.Type}})

each Text.Combine(List.Transform([Value], Text.From), ","), type text}})    

each Text.Combine(List.Transform([Value], Text.From), "#(lf)"), type text}})    

点击select属性栏

转换...数据透视列...值column:count,高级选项:不聚合

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Unique ID"}, "Attribute", "Value"),
#"Changed Type1" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Unique ID", type text}, {"Attribute", type text}, {"Value", type text}}),
#"Removed Duplicates" = Table.Distinct(#"Changed Type1"),
#"Grouped Rows" = Table.Group(#"Removed Duplicates", {"Unique ID", "Attribute"}, {{"Count", each Text.Combine(List.Transform([Value], Text.From), ", "), type text}}),
#"Pivoted Column" = Table.Pivot(#"Grouped Rows", List.Distinct(#"Grouped Rows"[Attribute]), "Attribute", "Count")
in  #"Pivoted Column"

你的数据是这样的:

Unique ID Data A Data B Data C
ABC 123 789 null
ABC 123 null name2
BCD 234 null null
BCD null null null
BCD 1234 null name2
EFG 333 222 name1
EFG null 222 null
ABC null null null

右键单击“唯一 ID”列,select“逆透视其他列”

将生成的值列类型更改为“文本”

Select 所有列。右键单击,选择“删除重复项”。

Select 属性列。从“转换”选项卡中选择“枢轴”。从下拉列表中选择值列。在高级选项下选择不聚合。添加您现有的代码作为第五个参数 each Text.Combine(_, "#(lf)")