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
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
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.

Top Solution Authors