cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Matt1979
Frequent Visitor

RANKX Expression for 3 Columns

Hi everyone, first post.  Using the sample data below (call the table RANKX Test), I want to write a RANKX measure that ranks the Attribute column by the Value column, for each ID column value:

 

IDAttributeValue
111A60
111B50
112A50
112B70
113A20
113B40

 

I know how to rank attribute by value, and create a visual level filter for the top ranked attribute:

 

Rank Attributes = IF(RANKX(ALLSELECTED('RANKX Test'[Attribute]),CALCULATE(SUM('RANKX Test'[Value])),,ASC,Dense)

                                 <=1,1,0)

 

A table with the Attribute column and a column with the COUNT of Attribute values looks like this:

 

Attribute         Count of Attribute

A                     3

 

I need to add the ID column to the measure, so that the attributes are ranked for each ID.  I would want the table above to look like this since A would be the top ranked attribute for two IDs and B would be the top ranked attribute for one ID:

 

Attribute             Count of Attribute

A                         2

B                         1

 

Appreciate any help on this!

 

 

 

1 ACCEPTED SOLUTION
Jihwan_Kim
Super User
Super User

Hi,

I am not sure how your datamodel looks like, but please check the below picture and the attached pbix file.

 

Jihwan_Kim_0-1686194941772.png

 

 

Count of attribute expected result: =
VAR _currentrowattribute =
    MAX ( Data[Attribute] )
RETURN
    IF (
        HASONEVALUE ( Data[Attribute] ),
        COUNTROWS (
            FILTER (
                ADDCOLUMNS (
                    ALL ( Data ),
                    "@Rank_partion_ID",
                        RANK (
                            skip,
                            ALL ( Data ),
                            ORDERBY ( Data[Value], ASC ),
                            PARTITIONBY ( Data[ID] )
                        )
                ),
                Data[Attribute] = _currentrowattribute
                    && [@Rank_partion_ID] = 1
            )
        )
    )

If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.


Go to My LinkedIn Page


View solution in original post

2 REPLIES 2
Jihwan_Kim
Super User
Super User

Hi,

I am not sure how your datamodel looks like, but please check the below picture and the attached pbix file.

 

Jihwan_Kim_0-1686194941772.png

 

 

Count of attribute expected result: =
VAR _currentrowattribute =
    MAX ( Data[Attribute] )
RETURN
    IF (
        HASONEVALUE ( Data[Attribute] ),
        COUNTROWS (
            FILTER (
                ADDCOLUMNS (
                    ALL ( Data ),
                    "@Rank_partion_ID",
                        RANK (
                            skip,
                            ALL ( Data ),
                            ORDERBY ( Data[Value], ASC ),
                            PARTITIONBY ( Data[ID] )
                        )
                ),
                Data[Attribute] = _currentrowattribute
                    && [@Rank_partion_ID] = 1
            )
        )
    )

If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.


Go to My LinkedIn Page


Thanks!  That works...

Helpful resources

Announcements
PBI Sept Update Carousel

Power BI September 2023 Update

Take a look at the September 2023 Power BI update to learn more.

Learn Live

Learn Live: Event Series

Join Microsoft Reactor and learn from developers.

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!

MPPC 2023 PBI Carousel

Power Platform Conference-Power BI and Fabric Sessions

Join us Oct 1 - 6 in Las Vegas for the Microsoft Power Platform Conference.

Top Solution Authors
Top Kudoed Authors