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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
IslamAbdelhalim
Frequent Visitor

DAX - Comparing values in the same row and rank the columns

I have a dataset and I would like to compare certain values per each row and rank the columns that I compared from one to three

 
 
ID ABCDEFGH
15338100566765243
27129173754233
3151699747246497
41933406491807051
5828847648935310
6319858597914750
7375631286453686
8768411935644785
964137113335692
107346632731957363
119468243152268920
129018591938466568
133898728618684352
14694964423227630
15991471693663185

I would like to compare only columns A, C, E, F, and H.  the results would be like that 

 

IDRank 1Rank 2Rank 3
1CEF
2CFE
3CHF
4EFH
5FAC
 
 
 
2 ACCEPTED SOLUTIONS
Greg_Deckler
Super User
Super User

Thinking of something like below. See attached PBIX file.

 

Rank 1 = 
    VAR __Table =
        {
            ("A",MAX([A])),
            ("C",MAX([C])),
            ("E",MAX([E])),
            ("F",MAX([F])),
            ("H",MAX([H]))
        }
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank",RANKX(__Table,[Value2],,DESC)
        )
RETURN
    MAXX(FILTER(__Table1,[__Rank] = 1),[Value1])

 

 


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

camargos88
Community Champion
Community Champion

Hi @IslamAbdelhalim ,

 

Check this file: Download PBIX 

 

If you want this paste this M-code on Blank Query -> Advanced Editor:

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("RVJBEsQgCPuL5x6KiMpbOv3/N9aEwl4Y0EAS9HmatKuZnqD7BLlv1POEuRDshD5w3d7raf1kOBckLl+lCAYUjjWgmCloF0xzB3Z8DZw4EXwRjFQ8mq827roGxUa5KEyIxtQNqg3NYyUalWsakptgsCvGOK6NgWIQJBVZgP9uqo08qAZodUYJMEYt1pQvxU50KttGsKdIAWRJZjSMydNJBqzQMDfBl0DWV/mwvJ2x6WDmSnc9F98V2jsVcnh4jLcDhdQyYve7GC2GEV6fgwtctQ92k3FokBE+0ssoy/wZNNFzZfppsfwb8RKSzVrGQ2R73x8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"ID " = _t, A = _t, B = _t, C = _t, D = _t, E = _t, F = _t, G = _t, H = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID ", Int64.Type}, {"A", Int64.Type}, {"B", Int64.Type}, {"C", Int64.Type}, {"D", Int64.Type}, {"E", Int64.Type}, {"F", Int64.Type}, {"G", Int64.Type}, {"H", Int64.Type}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"B", "D", "G"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"ID "}, {{"Rows", each _, type table [#"ID "=number, A=number, C=number, E=number, F=number, H=number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn(Table.SelectColumns(Table.Sort(Table.Transpose(Table.SelectColumns(Table.DemoteHeaders([Rows]),
{"Column2", "Column3", "Column4", "Column5", "Column6"})),
{"Column2", Order.Descending}), "Column1"), "Index", 1, 1)),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Rows"}),
#"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns1", "Custom", {"Column1", "Index"}, {"Column1", "Index"}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Expanded Custom", {{"Index", type text}}, "pt-BR"), List.Distinct(Table.TransformColumnTypes(#"Expanded Custom", {{"Index", type text}}, "pt-BR")[Index]), "Index", "Column1"),
#"Changed Type1" = Table.TransformColumnTypes(#"Pivoted Column",{{"5", type text}, {"4", type text}, {"3", type text}, {"2", type text}, {"1", type text}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"1", "Rank1"}, {"2", "Rank2"}, {"3", "Rank3"}, {"4", "Rank4"}, {"5", "Rank5"}})
in
#"Renamed Columns"

 

If you consider it as a solution, please mark as a solution and kudos.

Ricardo



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



View solution in original post

4 REPLIES 4
camargos88
Community Champion
Community Champion

Hi @IslamAbdelhalim ,

 

Check this file: Download PBIX 

 

If you want this paste this M-code on Blank Query -> Advanced Editor:

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("RVJBEsQgCPuL5x6KiMpbOv3/N9aEwl4Y0EAS9HmatKuZnqD7BLlv1POEuRDshD5w3d7raf1kOBckLl+lCAYUjjWgmCloF0xzB3Z8DZw4EXwRjFQ8mq827roGxUa5KEyIxtQNqg3NYyUalWsakptgsCvGOK6NgWIQJBVZgP9uqo08qAZodUYJMEYt1pQvxU50KttGsKdIAWRJZjSMydNJBqzQMDfBl0DWV/mwvJ2x6WDmSnc9F98V2jsVcnh4jLcDhdQyYve7GC2GEV6fgwtctQ92k3FokBE+0ssoy/wZNNFzZfppsfwb8RKSzVrGQ2R73x8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"ID " = _t, A = _t, B = _t, C = _t, D = _t, E = _t, F = _t, G = _t, H = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID ", Int64.Type}, {"A", Int64.Type}, {"B", Int64.Type}, {"C", Int64.Type}, {"D", Int64.Type}, {"E", Int64.Type}, {"F", Int64.Type}, {"G", Int64.Type}, {"H", Int64.Type}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"B", "D", "G"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"ID "}, {{"Rows", each _, type table [#"ID "=number, A=number, C=number, E=number, F=number, H=number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn(Table.SelectColumns(Table.Sort(Table.Transpose(Table.SelectColumns(Table.DemoteHeaders([Rows]),
{"Column2", "Column3", "Column4", "Column5", "Column6"})),
{"Column2", Order.Descending}), "Column1"), "Index", 1, 1)),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Rows"}),
#"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns1", "Custom", {"Column1", "Index"}, {"Column1", "Index"}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Expanded Custom", {{"Index", type text}}, "pt-BR"), List.Distinct(Table.TransformColumnTypes(#"Expanded Custom", {{"Index", type text}}, "pt-BR")[Index]), "Index", "Column1"),
#"Changed Type1" = Table.TransformColumnTypes(#"Pivoted Column",{{"5", type text}, {"4", type text}, {"3", type text}, {"2", type text}, {"1", type text}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"1", "Rank1"}, {"2", "Rank2"}, {"3", "Rank3"}, {"4", "Rank4"}, {"5", "Rank5"}})
in
#"Renamed Columns"

 

If you consider it as a solution, please mark as a solution and kudos.

Ricardo



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Hi @camargos88, The M-code get me the correct answer 👍

Greg_Deckler
Super User
Super User

Thinking of something like below. See attached PBIX file.

 

Rank 1 = 
    VAR __Table =
        {
            ("A",MAX([A])),
            ("C",MAX([C])),
            ("E",MAX([E])),
            ("F",MAX([F])),
            ("H",MAX([H]))
        }
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank",RANKX(__Table,[Value2],,DESC)
        )
RETURN
    MAXX(FILTER(__Table1,[__Rank] = 1),[Value1])

 

 


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Thanks, 

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.