Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!

Reply
Anonymous
Not applicable

Power Query - Get distinct columns based on Rank Column

Hi All

I am stuck in a scenario where i have assigned ranking to different Types.
Data contains repeated types values and i would like to get only 3 of these values in the result.
If 3 does not exist, top 2 type values to be my output. If same type exists pick any one type even if other values are different.

Consider the below scenario:

                  ID Type                ID Num      ID Issuer Ranking
(Sceanrio 1) Driver's License 13456         ABC        1
                    Driver's License 8970  DEF 1
                    Passport 456 XYZ 2
 
(Scenario 2 )Driving License 111 OPQ 1
                    Driver's License 232 gfjh 1
                    Driver's License 234555 gjghjs 1
                    Passport 222 aaaa 2
                    Other 333 aseg 3
                    Passport 12322 gbh 2

Desired output
                             ID Type ID Num ID Issuer Ranking
Scenario 1 result -Driver's License;Passport 13456;456 ;XYZ 1;2
 
Scenario 2result -Driving License;Passport;Other 111;222;333 OPQ;aaaa;aseg 1;2;3

Thanks in advance

 



1 ACCEPTED SOLUTION
BA_Pete
Super User
Super User

Hi @Anonymous ,

 

The following code should work for both scenarios. It uses two Group Bys to bundle up the [ID Type]s first, then to create the value lists:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8slMTs1LTlXSUTI0MjYxBdKOTs4gnlKsDrKsmbmFpQGQdnF1g8sGJBYXF+QXlQAFTEzNgGREZBSQNAJL+pdkpBYBecbGxkAysTg1HcRRio0FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID_Type = _t, ID_Num = _t, ID_Issuer = _t, Ranking = _t]),
    
    groupIdType = Table.Group(
        Source,
        {"ID_Type"},
        {
            {"ID_Num", each List.First([ID_Num]), type nullable text},
            {"ID_Issuer", each List.First([ID_Issuer]), type nullable text},
            {"Ranking", each List.First([Ranking]), type nullable text}
        }
    ),
    addGroupColumn = Table.AddColumn(groupIdType, "GroupColumn", each "Group Me"),
    groupGroupColumn = Table.Group(
        addGroupColumn,
        {"GroupColumn"},
        {
            {"ID_Type", each Text.Combine(List.Distinct([ID_Type]), ";"), type nullable text},
            {"ID_Num", each Text.Combine(List.Distinct([ID_Num]), ";"), type nullable text},
            {"ID_Issuer", each Text.Combine(List.Distinct([ID_Issuer]), ";"), type nullable text},
            {"Ranking", each Text.Combine(List.Distinct([Ranking]), ";"), type nullable text}
        }
    )
in
    groupGroupColumn

 

It changes this:

BA_Pete_0-1700549944999.png

 

...to this:

BA_Pete_1-1700549972449.png

 

 

Pete



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




View solution in original post

2 REPLIES 2
BA_Pete
Super User
Super User

Hi @Anonymous ,

 

The following code should work for both scenarios. It uses two Group Bys to bundle up the [ID Type]s first, then to create the value lists:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8slMTs1LTlXSUTI0MjYxBdKOTs4gnlKsDrKsmbmFpQGQdnF1g8sGJBYXF+QXlQAFTEzNgGREZBSQNAJL+pdkpBYBecbGxkAysTg1HcRRio0FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID_Type = _t, ID_Num = _t, ID_Issuer = _t, Ranking = _t]),
    
    groupIdType = Table.Group(
        Source,
        {"ID_Type"},
        {
            {"ID_Num", each List.First([ID_Num]), type nullable text},
            {"ID_Issuer", each List.First([ID_Issuer]), type nullable text},
            {"Ranking", each List.First([Ranking]), type nullable text}
        }
    ),
    addGroupColumn = Table.AddColumn(groupIdType, "GroupColumn", each "Group Me"),
    groupGroupColumn = Table.Group(
        addGroupColumn,
        {"GroupColumn"},
        {
            {"ID_Type", each Text.Combine(List.Distinct([ID_Type]), ";"), type nullable text},
            {"ID_Num", each Text.Combine(List.Distinct([ID_Num]), ";"), type nullable text},
            {"ID_Issuer", each Text.Combine(List.Distinct([ID_Issuer]), ";"), type nullable text},
            {"Ranking", each Text.Combine(List.Distinct([Ranking]), ";"), type nullable text}
        }
    )
in
    groupGroupColumn

 

It changes this:

BA_Pete_0-1700549944999.png

 

...to this:

BA_Pete_1-1700549972449.png

 

 

Pete



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Anonymous
Not applicable

Thanks. that was quick.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

Vote for your favorite vizzies from the Power BI World Championship submissions!

Sticker Challenge 2026 Carousel

Join our Community Sticker Challenge 2026

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.