使用Power Query堆叠列

卡洛斯·吉马良斯

我试图在Power BI上堆叠三列,如下所示。我的示例数据集如下:

处理 目的1 目的2 目的3
1个 苹果 香蕉 番木瓜
2 香蕉
3 番木瓜 香蕉

但是,我希望它保持这样:

处理 目标
1个 苹果
2 香蕉
3 番木瓜
1个 香蕉
2
3 香蕉
1个 番木瓜
2
3

我试图转置列,但无法获得此结果。

斯托拉克斯

根据您的输入数据和注释中的提示,我这样做了

let
    Source = Excel.CurrentWorkbook(){[Name="tblData"]}[Content],
    Step1 = Table.TransformColumnTypes(Source,{{"Processo", Int64.Type}, {"Finalidade 1", type text}, {"Finalidade 2", type text}, {"Finalidade 3", type text}}),
    tblUnPivot = Table.ReplaceValue(Step1,null,"",Replacer.ReplaceValue,{"Finalidade 2"}),
    replaceValues = Table.ReplaceValue(tblUnPivot,null,"",Replacer.ReplaceValue,{"Finalidade 3"}),
    unpivot = Table.UnpivotOtherColumns(replaceValues, {"Processo"}, "Attribut", "Wert"),
    sorted = Table.Sort(unpivot,{{"Attribut", Order.Ascending}, {"Processo", Order.Ascending}}),
    removeCol = Table.RemoveColumns(sorted,{"Attribut"}),
    renameCol = Table.RenameColumns(removeCol,{{"Wert", "Finalidade"}})
in
    renameCol

结果看起来像

在此处输入图片说明

但是解决方案在很大程度上取决于Finalidade 1列的命名

PS与列命名无关的另一种解决方案可能看起来像这样

let
    Source = Excel.CurrentWorkbook(){[Name="tblData"]}[Content],
    Step1 = Table.TransformColumnTypes(Source,{{"Processo", Int64.Type}, {"Finalidade 1", type text}, {"Finalidade 2", type text}, {"Finalidade 3", type text}}),
    tblUnPivot = Table.ReplaceValue(Step1,null,"",Replacer.ReplaceValue,{"Finalidade 2"}),
    replaceValues = Table.ReplaceValue(tblUnPivot,null,"",Replacer.ReplaceValue,{"Finalidade 3"}),
    unpivot = Table.UnpivotOtherColumns(replaceValues, {"Processo"}, "Attribut", "Wert"),
    addColumn = Table.AddColumn(unpivot, "colPos", each List.PositionOf(Table.ColumnNames(Step1),[Attribut])),
    #"Neu angeordnete Spalten" = Table.ReorderColumns(addColumn,{"Processo", "colPos", "Attribut", "Wert"}),
    removeCol1 = Table.RemoveColumns(#"Neu angeordnete Spalten",{"Attribut"}),
    sortRows = Table.Sort(removeCol1,{{"colPos", Order.Ascending}, {"Processo", Order.Ascending}}),
    renameCol = Table.RenameColumns(sortRows,{{"Wert", "Fianlidade"}}),
    removeCol2 = Table.RemoveColumns(renameCol,{"colPos"})
in
    removeCol2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章