cancel
Showing results for 
Search instead for 
Did you mean: 

Fabric is Generally Available. Browse Fabric Presentations. Work towards your Fabric certification with the Cloud Skills Challenge.

Reply
eshetb
Frequent Visitor

can't sort a non-unique column based on another one

hey,

i'm trying to sort one column which has duplicate values by another one.

assume this example, where i want to have "status_category" sorted by "rank":

 

statusstatus categoryrank
newin progress10
first reviewin progress20
second reviewin progress30
rejectedclosed40
on holdhold50
closedclosed60
canceledclosed70

 

the problem is that one category value cannot have more than one rank value. (getting a can't sort error)
so i created another column, taking the min rank value for each category:

 

statusstatus_categoryrankmin_rank
newin progress1010
first reviewin progress2010
second reviewin progress3010
rejectedclosed4040
on holdhold5050
closedclosed6060
canceledclosed7060


using this:

 

min_rank = 
VAR currentCategory = table[status_category]
RETURN
    CALCULATE (
        MIN ( table[rank] ),
        FILTER ( ALL ( table), table[status_category] = currentCategory)
    )

so now there's only one possible rank for each category value.
however, wheb ttying the sort by option i get a new error: "This column can't be sorted by a column that is already sorted, directly or indirectly, by this column".
am i to understand that it's not possible to sort a column by another one that's calcaulated by it?

can anyone find a solution to either of the sort errors?

 

1 ACCEPTED SOLUTION
Stachu
Community Champion
Community Champion

you can create the rank in query editor

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WykstV9JRysxTKCjKTy9KLS4G8gwNlGJ1opXSMouKSxSKUssysagxgqgpTk3Oz0vBpcgYoqgoNSs1uSQ1BSiSnJNfDGaYQKTy8xQy8nNAAlDKFCIOVwdnmEElEvOSU3NQpcyBUrEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [status = _t, #"status category" = _t, rank = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"status", type text}, {"status category", type text}, {"rank", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"status category", "rank"}),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"status category"}, {{"min_rank", each List.Min([rank]), type number}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"status category"},#"Grouped Rows",{"status category"},"Custom1",JoinKind.LeftOuter),
    #"Expanded Custom1" = Table.ExpandTableColumn(#"Merged Queries", "Custom1", {"min_rank"}, {"min_rank"})
in
    #"Expanded Custom1"


Did I answer your question? Mark my post as a solution!
Thank you for the kudos 🙂

Proud to be a Super User!

View solution in original post

2 REPLIES 2
Stachu
Community Champion
Community Champion

you can create the rank in query editor

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WykstV9JRysxTKCjKTy9KLS4G8gwNlGJ1opXSMouKSxSKUssysagxgqgpTk3Oz0vBpcgYoqgoNSs1uSQ1BSiSnJNfDGaYQKTy8xQy8nNAAlDKFCIOVwdnmEElEvOSU3NQpcyBUrEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [status = _t, #"status category" = _t, rank = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"status", type text}, {"status category", type text}, {"rank", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"status category", "rank"}),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"status category"}, {{"min_rank", each List.Min([rank]), type number}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"status category"},#"Grouped Rows",{"status category"},"Custom1",JoinKind.LeftOuter),
    #"Expanded Custom1" = Table.ExpandTableColumn(#"Merged Queries", "Custom1", {"min_rank"}, {"min_rank"})
in
    #"Expanded Custom1"


Did I answer your question? Mark my post as a solution!
Thank you for the kudos 🙂

Proud to be a Super User!

eshetb
Frequent Visitor

Thanks, that's perfect!

Helpful resources

Announcements
PBI November 2023 Update Carousel

Power BI Monthly Update - November 2023

Check out the November 2023 Power BI update to learn about new features.

Community News

Fabric Community News unified experience

Read the latest Fabric Community announcements, including updates on Power BI, Synapse, Data Factory and Data Activator.

Dashboard in a day with date

Exclusive opportunity for Women!

Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!

Power BI Fabric Summit Carousel

The largest Power BI and Fabric virtual conference

130+ sessions, 130+ speakers, Product managers, MVPs, and experts. All about Power BI and Fabric. Attend online or watch the recordings.

Top Solution Authors
Top Kudoed Authors