您将如何转换具有可变数量的 ID 位置的 table,以便位置成为列?
How would you transform a table with a variable number of locations for an ID so that locations become columns?
我有一个包含列 ID 和位置的 table。一个 ID 可以有多个(比方说 5 个)位置。如何将源 Table 转换为目标 Table?
来源Table
ID,位置
A 楼走廊
B 栋,后走廊
B 楼前走廊
C栋一楼
C栋2楼
C 栋 3 楼
目标Table
ID、位置 1、位置 2、位置 3
Bldg A,走廊,
B 栋,后走廊,前走廊,
C栋1楼2楼3楼
我试过转置 pivot/unpivot 但我得不到我想要的结果。
假设 Table1 有两列 ID 和 Location
Select table 并加载到 powerquery
数据...从 Table 范围...[x] table 有 headers
Select/Click ID 列
right-click 分组依据...[基本] ... 分组 By:ID ... 新列 Name:Data ... Operation:All 行 ... Column:blank
这会将每个 ID 的所有数据汇总到一个 table 的列中
添加列..自定义列....
新列名称:自定义 ... 公式:=Table.Column([Data],"Location")
这将为每个仅包含位置的 ID 创建一个列表
单击自定义列顶部的 -><- 箭头,提取值,带逗号
这会将 Location 的所有唯一值与 , 结合起来以将它们分开
最终代码(您也可以使用 Advanced...粘贴)
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"
我有一个包含列 ID 和位置的 table。一个 ID 可以有多个(比方说 5 个)位置。如何将源 Table 转换为目标 Table?
来源Table
ID,位置
A 楼走廊
B 栋,后走廊
B 楼前走廊
C栋一楼
C栋2楼
C 栋 3 楼
目标Table
ID、位置 1、位置 2、位置 3
Bldg A,走廊,
B 栋,后走廊,前走廊,
C栋1楼2楼3楼
我试过转置 pivot/unpivot 但我得不到我想要的结果。
假设 Table1 有两列 ID 和 Location
Select table 并加载到 powerquery 数据...从 Table 范围...[x] table 有 headers
Select/Click ID 列 right-click 分组依据...[基本] ... 分组 By:ID ... 新列 Name:Data ... Operation:All 行 ... Column:blank
这会将每个 ID 的所有数据汇总到一个 table 的列中
添加列..自定义列....
新列名称:自定义 ... 公式:=Table.Column([Data],"Location")
这将为每个仅包含位置的 ID 创建一个列表
单击自定义列顶部的 -><- 箭头,提取值,带逗号
这会将 Location 的所有唯一值与 , 结合起来以将它们分开
最终代码(您也可以使用 Advanced...粘贴)
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"