Forum Discussion

SloeMo's avatar
SloeMo
Frequent Visitor
3 years ago
Solved

Unpivotting multiple columns - Power query

Hi all, I have a sharepoint list with multiple columns in that I am tryting to pivot into a usable format. So far I have tried lots of steps which have all failed with the result of me creating duplcate queries and then appending to 1 table which is inefficient. I have tried following steps from other suggestions but cant seem to get it right

 

The data looks like this although there would be 22 Areas not just the 2 in my example below, each area has 4 columns attributed to them - Owner, Agreed, Date Agreed and commentary.

Programme Business Case NameBusiness Case OwnerArea 1 OwnerArea 1 AgreedArea 1 Date AgreedArea 1 CommentaryArea 2 OwnerArea 2 AgreedArea 2 DateArea 2 Commentary
Test ProgrammeLee TestLee MorganLee MorganYes30/06/2023text in hereLee MorgannullnullRandom text
Test Programme 2Lee Test 2Lee MorganLee MorgannullnullDifferent textLee Morgannullnullnull

 

What I am trying to achieve is something like the following format.

 

Programme Business Case NameBusiness Case OwnerAreaArea OwnerAgreedDate AgreedCommentary
Test ProgrammeLee TestLee MorganArea 1Lee MorganYes30/06/2023text in here
Test ProgrammeLee TestLee MorganArea 2Lee MorgannullnullRandom text
Test Programme 2Lee Test 2Lee MorganArea 1Lee MorgannullnullDifferent text
Test Programme 2Lee Test 2Lee MorganArea 2Lee Morgannullnullnull

 

Any help guidance is greatly appreciated.

 

Many thanks

Lee

  • Hi

    Unpivot columns, Split Attribute, Pivot

     

    let
    Source = YourSource,
    Unpivot = Table.UnpivotOtherColumns(Source, {"Programme ", "Business Case Name", "Business Case Owner"}, "Attribute", "Value"),
    #"Split Column" = Table.SplitColumn(Unpivot, "Attribute", Splitter.SplitTextByCharacterTransition({"0".."9"}, {" "}), {"Attribute.1", "Attribute.2"}),
    Trim = Table.TransformColumns(#"Split Column",{{"Attribute.2", Text.Trim, type text}}),
    Pivot = Table.Pivot(Trim, List.Distinct(Trim[Attribute.2]), "Attribute.2", "Value")
    in
    Pivot

    Stéphane 

3 Replies

  • Hi

    Unpivot columns, Split Attribute, Pivot

     

    let
    Source = YourSource,
    Unpivot = Table.UnpivotOtherColumns(Source, {"Programme ", "Business Case Name", "Business Case Owner"}, "Attribute", "Value"),
    #"Split Column" = Table.SplitColumn(Unpivot, "Attribute", Splitter.SplitTextByCharacterTransition({"0".."9"}, {" "}), {"Attribute.1", "Attribute.2"}),
    Trim = Table.TransformColumns(#"Split Column",{{"Attribute.2", Text.Trim, type text}}),
    Pivot = Table.Pivot(Trim, List.Distinct(Trim[Attribute.2]), "Attribute.2", "Value")
    in
    Pivot

    Stéphane 

  • SloeMo's avatar
    SloeMo
    Frequent Visitor

    Thank you so much for this, has worked like a charm for the multiple columns.

  • Hello , 

    I have a scenario maybe it can help you :

    1. Duplicate your table.
    2. Remove all features related to Area 2 from the first table. Instead, add a new column called 'Area' and fill it with the value 'Area1' for all rows.
    3. Remove all features related to Area 1 from the second table. Instead, add a new column called 'Area' and fill it with the value 'Area2' for all rows.
    4. Append both tables together and rename the headers as desired.