Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Unpivot columns in Power Query

Hi,

I have a table like below. I want to unpivot columns below 

GroupA_Device_Name
GroupB_Device_Name
GroupA_Device_Category
GroupB_Device_Category
GroupA_Device_Number
GroupB_Device_Number
GroupA_Device_ID
GroupB_Device_ID

RegionSubRegionLocationKeyNodeSequence_CategoryScoreItems_TypeGroupA_Device_NameGroupB_Device_NameGroupA_Device_CategoryGroupB_Device_CategoryGroupA_Device_NumberGroupB_Device_NumberGroupA_Device_IDGroupB_Device_ID
EURASIA-PACIFICASIA SOUTHHUBA1.1.12.1.11. Glycol Contactor / AbsorberW H&S3 ESDV-20000 Basic Process Control System (BPCS) LALL-20001 LALL-20001 
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.4.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.4.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.5.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.5.11. Glycol Contactor / AbsorberW H&S3 PSV-102A/B Basic Process Control System (BPCS) PAHH-100/101 PAHH-100/101 

 

I want result like this by unpivoting above columns to below. 

 

RegionSubRegionLocationKeyNodeSequence_CategoryScoreItems_TypeDevice_NameValueDevice_CategoryValueDevice_NumberValueDevice_IDValue
EURASIA-PACIFICASIA SOUTHHUBA1.1.12.1.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.4.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx

 

I want to result like this 

RegionSubRegionLocationKeyNodeSequence_CategoryScoreItems_TypeDevice_NameValueDevice_CategoryValueDevice_NumberValueDevice_IDValue
EURASIA-PACIFICASIA SOUTHHUBA1.1.12.1.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.4.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx

 

Result I wanted like below

 

RegionSubRegionLocationKeyNodeSequence_CategoryScoreItems_TypeDevice_NameValueDevice_CategoryValueDevice_NumberValueDevice_IDValue
EURASIA-PACIFICASIA SOUTHHUBA1.1.12.1.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.2.1.11. Glycol Contactor / AbsorberP H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.2.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.3.11. Glycol Contactor / AbsorberW H&S3 GroupAxxxxGroupAxxxxGroupAxxxxxGroupAxxxxx
EURASIA-PACIFICASIA SOUTHHUBA1.1.1.4.11. Glycol Contactor / AbsorberW H&S3 GroupBxxxxGroupBxxxxGroupBxxxxxGroupBxxxxx

 

 

  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi  Anonymous ,

    Here are the steps you can follow:

    1. Transform – UnpivotColumns -- Yellow-marked columns .

    2. In Power query. Add Column – Index Column – From 1.

    Result:

    3. Create calculated table.

    Flag1 =
    SUMMARIZE('True','True'[Region],'True'[SubRegion],'True'[Location],'True'[Key],'True'[Node],'True'[Sequence_Category],'True'[Score],'True'[Items_Type],'True'[Index])

    Table 3 =
    VAR _table1 =
        FILTER ( 'Flag1', [Group] <> BLANK () )
    RETURN
        SUMMARIZE (
            _table1,
            [Region],
            [SubRegion],
            [Location],
            [Key],
            [Node],
            [Sequence_Category],
            [Score],
            [Items_Type],
            [Group],
            "Device_Name", [Group],
            "Value1",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Name",
                            'True'[Attribute] = "GroupB_Device_Name"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_Category", [Group],
            "Value2",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Category",
                            'True'[Attribute] = "GroupA_Device_Category"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_Number", [Group],
            "Value3",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Number",
                            'True'[Attribute] = "GroupA_Device_Number"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_ID", [Group],
            "Value4",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_ID",
                            'True'[Attribute] = "GroupA_Device_ID"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                )
        )
    

    4. Result:

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi  Anonymous ,

    Here are the steps you can follow:

    1. Transform – UnpivotColumns -- Yellow-marked columns .

    2. In Power query. Add Column – Index Column – From 1.

    Result:

    3. Create calculated table.

    Flag1 =
    SUMMARIZE('True','True'[Region],'True'[SubRegion],'True'[Location],'True'[Key],'True'[Node],'True'[Sequence_Category],'True'[Score],'True'[Items_Type],'True'[Index])

    Table 3 =
    VAR _table1 =
        FILTER ( 'Flag1', [Group] <> BLANK () )
    RETURN
        SUMMARIZE (
            _table1,
            [Region],
            [SubRegion],
            [Location],
            [Key],
            [Node],
            [Sequence_Category],
            [Score],
            [Items_Type],
            [Group],
            "Device_Name", [Group],
            "Value1",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Name",
                            'True'[Attribute] = "GroupB_Device_Name"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_Category", [Group],
            "Value2",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Category",
                            'True'[Attribute] = "GroupA_Device_Category"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_Number", [Group],
            "Value3",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_Number",
                            'True'[Attribute] = "GroupA_Device_Number"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                ),
            "Device_ID", [Group],
            "Value4",
                MAXX (
                    FILTER (
                        ALL ( 'True' ),
                        OR (
                            'True'[Attribute] = "GroupA_Device_ID",
                            'True'[Attribute] = "GroupA_Device_ID"
                        )
                            && LEFT ( 'True'[Attribute], 6 ) = [Group]
                            && 'True'[Key] = EARLIER ( 'Flag1'[Key] )
                    ),
                    [Value]
                )
        )
    

    4. Result:

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly