Forum Discussion

testyuiiop's avatar
testyuiiop
Helper I
2 years ago
Solved

Need help with power query

I'm working on hierarchial data. My data is like below, rank represents the hierachy level. and I want the expected outpout like below:   How I can achieve this in power q...
  • dufoq3's avatar
    2 years ago

    Hi testyuiiop

     

    v1 Group should be faster, but if you do not have many rows - you won't see the difference.

     

    Result

     

    v1 Group

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTJUitWJVlJwAjKNIEwFZyDbGMpWcAFyTMAcR0Mk5YbI6g1RNBhCdMQCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Name = _t, Rank = _t]),
        TrimmedText = Table.TransformColumns(Source,{{"Name", Text.Trim, type text}}),
        GroupedRows = Table.Group(TrimmedText, {"Rank"}, {{"All", each Table.ToColumns(Table.RemoveColumns(_, {"Rank"})), type table}}),
        Combined = Table.FromColumns(List.Combine(GroupedRows[All]), List.Transform(GroupedRows[Rank], Text.From))
    in
        Combined

     

     

    v2 Pivot

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTJUitWJVlJwAjKNIEwFZyDbGMpWcAFyTMAcR0Mk5YbI6g1RNBhCdMQCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Name = _t, Rank = _t]),
        TrimmedText = Table.TransformColumns(Source,{{"Name", Text.Trim, type text}}),
        PivotedColumn = Table.Pivot(Table.TransformColumnTypes(TrimmedText, {{"Rank", type text}}, "sk-SK"), List.Distinct(Table.TransformColumnTypes(TrimmedText, {{"Rank", type text}}, "sk-SK")[Rank]), "Rank", "Name", each _),
        Ad_FinalTable = Table.AddColumn(PivotedColumn, "FinalTable", each Table.FromColumns(Record.ToList(_), Table.ColumnNames(PivotedColumn)), type table),
        FinalTable = Ad_FinalTable{0}[FinalTable]
    in
        FinalTable