我有一个列ID和位置的表。一个ID可以有多个(比如说5)位置。如何将源表转换为目标表?
源表
ID,位置
大道A,走廊
B房,后走廊
B房,前走廊
C房,1楼
C房,2楼
C房,3楼
目标表
ID,Location1,Location2,Location3
大道A走廊,
B房,后走廊,前厅,
C房,1楼,2楼,3楼
我试过转转和转转/不转转,但我无法得到我想要的结果。
发布于 2020-01-06 13:48:13
假设Table1有两个列ID和位置
选择该表并加载到powerquery Data...From表范围.表有标头
选择/单击ID列,右键单击“组”.基本..。组按:身份证..。新的列名:数据..。操作:所有行..。栏:空白
将每个ID的所有数据聚合到自己列中的表中。
添加Column..Custom列..。
新列名:自定义..。公式:=Table.Column(数据,“位置”)
,它将为每个ID创建一个列表,该ID中只有其中的位置
单击->自定义列顶部的<-箭头,提取值,并使用逗号
将位置的所有唯一值组合在一起,以将它们分开。
最后的代码(您也可以使用高级.粘贴这些代码)
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"ID"}, {{"Data", each _, type table}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Data],"Location")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ","), type text})
in #"Extracted Values"
上面的好处是更容易理解,并且可以使用接口完成。如果你想变得漂亮,你可以在下面使用.聚合ID和组合位置的一个步骤。使用高级编辑器粘贴
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"ID"}, {{"Custom", each Text.Combine(List.Transform([Location], Text.From), ","), type text}})
in #"Grouped Rows"
https://stackoverflow.com/questions/59617811
复制相似问题