Forum Discussion

CPrince's avatar
CPrince
Frequent Visitor
6 years ago
Solved

Merge duplicate rows while pivoting/retaining unique data from another column?

Hi,   So I have a data set with a varying number of duplicates in the same column.   Column 1 | Column 2 N1 | 123 N1 | 124 N2 | 125 N2 | 126 N2 | 127 N3 | 128 N3 | 129 N4 | 130 N4 | 131 ...
  • v-lid-msft's avatar
    6 years ago

    Hi CPrince ,

     

    We can do the following steps in Power Query Editor to meet your first requirement:

     

    1. Group by the Column1

     

    2. add the custom column

     

    Table.Skip(
        Table.Transpose([OtherColumns]),
        1
    )

     

     

    3. Expand the new column

     

    If you want to merge them into one column, we can add a custom culumn like following:

     

    Text.Combine(
        Table.ToList(
            Table.TransformColumnTypes(
               Table.SelectColumns([OtherColumns],{"Column2"}),
               {{"Column2", type text}}
            )
        ),
        ", "
    )

     

     

    All the Queries:

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8jNU0lEyNDJWitWBc0wgHCMwxxSZY4bMMYdwjMEcC2SOJYRjAuIYGyBzDJE5RkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", Int64.Type}}),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Column1"}, {{"OtherColumns", each _, type table [Column1=text, Column2=number]}}),
        Test = Table.AddColumn(#"Grouped Rows", "MergeTable", each Table.Skip(
        Table.Transpose([OtherColumns]),
        1
    )),
        #"Expanded MergeTable" = Table.ExpandTableColumn(Test, "MergeTable", {"Column1", "Column2", "Column3"}, {"MergeTable.Column1", "MergeTable.Column2", "MergeTable.Column3"})
    in
        #"Expanded MergeTable"

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8jNU0lEyNDJWitWBc0wgHCMwxxSZY4bMMYdwjMEcC2SOJYRjAuIYGyBzDJE5RkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", Int64.Type}}),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Column1"}, {{"OtherColumns", each _, type table [Column1=text, Column2=number]}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Text.Combine(
        Table.ToList(
            Table.TransformColumnTypes(
               Table.SelectColumns([OtherColumns],{"Column2"}),
               {{"Column2", type text}}
            )
        ),
        ", "
    ))
    in
        #"Added Custom"


    Best regards,