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

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply
DivyaReddy
Frequent Visitor

RankX for multiple columns with percentage and numbers

Dear PBI enthusiasts!

I have a requirement where I need to show the Top N of a column '%Profit' and if there is a tie then I need to use the column 'Total Sales'. I am using RankX for my first column but not getting the second column to be used when there is a tie. 

Any help would be greatly appreciated and thank you in advance!

DivyaReddy_0-1666291860207.png

 

1 ACCEPTED SOLUTION

Hi @DivyaReddy ,

try this measure

Rank =

VAR Rank1 =

RANKX(ALL(Facts),

     [% Profit]

)

VAR Rank2 =

    VAR CurrentProfit = [% Profit]

    RETURN

    RANKX(

     CALCULATETABLE(

                   FILTER(

                         ADDCOLUMNS(

                                   Facts,

                                 "@Total Sales",[Total Sales],

                                 "@%Profit",[% Profit]

                                  ),

                        [% Profit] = CurrentProfit

                         ),

              ALL('Facts')),

[Total Sales]

)

RETURN

Rank1*Rank2

 

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

View solution in original post

7 REPLIES 7
mangaus1111
Solution Sage
Solution Sage

Hi @DivyaReddy ,

 

try this calculated column:

 

RANK =
VAR _Rank =RANKX('Facts14',[%Profit])
RETURN
COUNTX(
       FILTER(
              'Facts14',
               'Facts14'[%Profit] = EARLIER('Facts14'[%Profit]) && 'Facts14'[Total Sales] > EARLIER('Facts14'[Total Sales])
             ),
       [Total Sales]
) + _Rank
 
Did I answer your question? Mark this post as a solution if I did!

 

This seems to have worked in theory but not sure why I get "Parameter not correct type" for "EARLIER('Facts14'[%Profit])" and EARLIER('Facts14'[Total Sales]) when I substituted my actual column and table names  They They are measures (not columns) in my actual data not sure if that matters?

Hi @DivyaReddy ,

try this measure

Rank =

VAR Rank1 =

RANKX(ALL(Facts),

     [% Profit]

)

VAR Rank2 =

    VAR CurrentProfit = [% Profit]

    RETURN

    RANKX(

     CALCULATETABLE(

                   FILTER(

                         ADDCOLUMNS(

                                   Facts,

                                 "@Total Sales",[Total Sales],

                                 "@%Profit",[% Profit]

                                  ),

                        [% Profit] = CurrentProfit

                         ),

              ALL('Facts')),

[Total Sales]

)

RETURN

Rank1*Rank2

 

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

Looking into it - thank u so much!

HI @DivyaReddy ,

Did I answer your question? Mark this post as a solution if I did!

mangaus1111
Solution Sage
Solution Sage

not very clear for me

Sorry abt that - updated the description and hopefully it is better now. 

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

September Power BI Update Carousel

Power BI Monthly Update - September 2025

Check out the September 2025 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.

Top Solution Authors
Top Kudoed Authors