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.


Click here to visit my LinkedIn page

Click here to schedule a short Teams meeting to discuss your question.

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.


Click here to visit my LinkedIn page

Click here to schedule a short Teams meeting to discuss your question.

Thanks!  That works...

avatar user

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)