转置(或旋转但不聚合)name/value 列对
Transposing (or pivoting but not aggregating) a name/value column pair
我有一个从 XML 导入到 PQ/Excel 的数据集,它具有这种形式 -
Type Name Value
measure name depth
measure svmbol d
measure value Fathom
measure name width
measure svmbol w
measure value metre
measure property Length
尽管每个项目(度量)的属性数量从 3 到 5 不等,但数据形状清晰且结构化。
我想把后两列的name/value对改成table形式-
Type Name Symbol Value Property
measure depth d fathom
measure width w metre Length
看起来应该很简单,但是Transpose
只想转置整个table,而Name的Pivot
column,这看起来是正确的工具,要么想要聚合(计数)数据,这对我没有用,要么如果你选择“不聚合”选项失败并出现错误“枚举中的元素太多”。
我认为我可以通过创建四个包含逻辑的自定义列来费力地实现结果,但这似乎过分了。有没有一种方法可以使用 Pivot 或其他函数来轻松完成此操作?
您需要一个唯一的计数器,每次 [Name]=name 在旋转之前都会更改
添加列..索引列
添加列..自定义列...使用公式
if [Name]="name" then [Index] else null
右键单击新的自定义列并向下填写
右键单击索引列并将其删除
单击名称列,然后单击转换...数据透视列...值列为值,在高级中选择不聚合
右键单击多余的列并将其删除
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index1" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom1" = Table.AddColumn(#"Added Index1", "Custom", each if [Name]="name" then [Index] else null),
#"Filled Down1" = Table.FillDown(#"Added Custom1",{"Custom"}),
#"Removed Columns" = Table.RemoveColumns(#"Filled Down1",{"Index"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Name]), "Name", "Value")
in #"Pivoted Column"
我有一个从 XML 导入到 PQ/Excel 的数据集,它具有这种形式 -
Type Name Value
measure name depth
measure svmbol d
measure value Fathom
measure name width
measure svmbol w
measure value metre
measure property Length
尽管每个项目(度量)的属性数量从 3 到 5 不等,但数据形状清晰且结构化。
我想把后两列的name/value对改成table形式-
Type Name Symbol Value Property
measure depth d fathom
measure width w metre Length
看起来应该很简单,但是Transpose
只想转置整个table,而Name的Pivot
column,这看起来是正确的工具,要么想要聚合(计数)数据,这对我没有用,要么如果你选择“不聚合”选项失败并出现错误“枚举中的元素太多”。
我认为我可以通过创建四个包含逻辑的自定义列来费力地实现结果,但这似乎过分了。有没有一种方法可以使用 Pivot 或其他函数来轻松完成此操作?
您需要一个唯一的计数器,每次 [Name]=name 在旋转之前都会更改
添加列..索引列
添加列..自定义列...使用公式
if [Name]="name" then [Index] else null
右键单击新的自定义列并向下填写
右键单击索引列并将其删除
单击名称列,然后单击转换...数据透视列...值列为值,在高级中选择不聚合
右键单击多余的列并将其删除
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index1" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom1" = Table.AddColumn(#"Added Index1", "Custom", each if [Name]="name" then [Index] else null),
#"Filled Down1" = Table.FillDown(#"Added Custom1",{"Custom"}),
#"Removed Columns" = Table.RemoveColumns(#"Filled Down1",{"Index"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Name]), "Name", "Value")
in #"Pivoted Column"