Forum Discussion

lightw0rks's avatar
lightw0rks
Frequent Visitor
6 years ago
Solved

Combine rows by ID and transpose columns

I have the following table, where A = a number and B = some text

 

IDDataTypeValue
1NumberA
1TextB
2NumberA
2Text B
3NumberA
3TextB

 

I would like the followng output:

 

IDNumberText
1AB
2AB
3AB

 

I have tried using Group by and transposing the columns, as well as trying to create a custom column but have not been successful. Any help would be appreciated.

  • Hi lightw0rks ,

     

    If you have the table as presented you need to:

    • Select Data Type column
    • Transform
    • Pivot Columns
    • Use values of colum Text
    • Don't aggregate
    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUfIrzU1KLQIyDJVidSBCIakVJUDKCSxghKnGCF2NMaYaYxQ1sQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, DataType = _t, Value = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"DataType", type text}, {"Value", type text}}),
        #"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[DataType]), "DataType", "Value")
    in
        #"Pivoted Column"

     

    If you don't have the datatype column you need to add the a calculated column with the following code:

    if (try Number.From([Value]) otherwise "Text" ) = "Text" then "Text" else "Number"

     

    then just follow the steps above using this new column

2 Replies

  • Hi lightw0rks ,

     

    If you have the table as presented you need to:

    • Select Data Type column
    • Transform
    • Pivot Columns
    • Use values of colum Text
    • Don't aggregate
    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUfIrzU1KLQIyDJVidSBCIakVJUDKCSxghKnGCF2NMaYaYxQ1sQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, DataType = _t, Value = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"DataType", type text}, {"Value", type text}}),
        #"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[DataType]), "DataType", "Value")
    in
        #"Pivoted Column"

     

    If you don't have the datatype column you need to add the a calculated column with the following code:

    if (try Number.From([Value]) otherwise "Text" ) = "Text" then "Text" else "Number"

     

    then just follow the steps above using this new column