使用 Power Query 对数据进行分组和转置

Using Power Query to Group & Transpose Data

需要帮助转换如下所示的数据库:

进入这个:

(右边的后续列不在视图中)

*注:所提供的数据是出于说明目的编造的

我开始使用 Excel 的 Power Query 按 ID 分组,每个 ID 都有一个包含 "tables" 的列,但是当我展开这些列时,我又回到了方块 0。我我正在尝试查看如何转置数据,以便我可以获得与其他列(日期 2、值 2、过程 2、日期 3、值 3、过程 3 等)格式相同的新列,其中包含每个列的值每个参与者的行。本质上,我希望每个 ID 一行,并在后续列中包含参与者的所有数据。我查看了不同的网络帖子和教程,但一直无法弄清楚如何执行此操作。非常感谢任何想法或建议!

您需要一个额外的 Group-Counter/Index,然后组合使用 unpivot 和 pivot 列。 这是一个代码。我在 excel sheet.

中命名了我的来源-table "tbl_Source"
let
    Source = tbl_Source,
    Group_Rows = Table.Group(Source, {"ID"}, {{"KPI", each _, type table [ID=number, Attribut=text, Wert=anynonnull]}}),
    Add_Custom_Column_Index = Table.AddColumn(Group_Rows, "Index", each Table.AddIndexColumn([KPI], "Index", 1, 1)),
    Expand_Index = Table.ExpandTableColumn(Add_Custom_Column_Index, "Index", {"Date", "Lab_Type", "LabName", "Value", "Unit", "ReferenceValues", "Index" }, {"Date", "Lab_Type", "LabName", "Value", "Unit", "ReferenceValues", "Index"}),
    Delete_Column = Table.RemoveColumns(Expand_Index,{"KPI"}),
    Unpivot_Other_Columns = Table.UnpivotOtherColumns(Delete_Column, {"ID", "Index"}, "Attribut", "Wert"),
    Combine_Columns = Table.CombineColumns(Table.TransformColumnTypes(Unpivot_Other_Columns, {{"Index", type text}}, "de-DE"),{"Attribut", "Index"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"ColumnHeader"),
    Pivot_Columns = Table.Pivot(Combine_Columns, List.Distinct(Combine_Columns[ColumnHeader]), "ColumnHeader", "Wert"),
    /*Change Type of all Date Columns */
    ChangeType_Date = Table.TransformColumnTypes(Pivot_Columns, 
                             List.Transform(List.Select(Table.ColumnNames(Pivot_Columns), 
                                         each Text.StartsWith(_, "Date")
                              ),
                            each {_, type date}))
in
    ChangeType_Date

问候克里斯

你的下一个问题 PI/mentor 应该是 "How do I unpivot this data ;-) "