Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
I have the following data on ID and Type:
| ID | Type | Type TopN | Ranking |
| 1 | A | A | 1 |
| 2 | B | B | 2 |
| 3 | C | Others | 3 |
| 4 | A | A | 1 |
| 5 | A | A | 1 |
| 6 | B | B | 2 |
| 7 | C | Others | 3 |
| 8 | D | Others | 4 |
| 9 | E | Others | 5 |
and I want to add the Type TopN column that shows the type for the top N types by count, and Others for the rest.
To do this, I tried adding a Ranking column that (theoretically) ranks the type by frequency of appearance, i.e. since A appears 3 times it has a ranking of 1, B ranking of 2 etc. From there, I can use the following code:
RETURN IF(
Ranking<=3,
[Type],
"OTHERS"
)
To get Type TopN column.
The issue comes with trying to get the Ranking column. I tried:
RANKX(
table,
[Type],
COUNT(table[Type]),
DESC,
Dense
)
but it gives me the error "Function 'RANKX' does not support comparing values of type Text with values of type Integer. Consider using the VALUE or FORMAT function to convert one of the values."
I know my requirement is possible to achieve by duplicating the table and using Group By to aggregate the count, apply the RANKX filter, then do a left join, but I'm wondering if RANKX can do this in one step and if there's anything I'm not understanding about this function. Thanks
Solved! Go to Solution.
Hi, @bleow
To create 2 column with this:
_RankColumn =
RANKX (
'Table',
CALCULATE ( COUNT ( [Type] ), ALLEXCEPT ( 'Table', 'Table'[Type] ) ),
,
DESC,
DENSE
)
_TopN =
IF ( 'Table'[_RankColumn] <= 3, [Type], "Others" )
Result:
Please refer to the attachment below for details
For references:
Hope this helps.
Best Regards,
Community Support Team _ Zeon Zheng
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, @bleow
To create 2 column with this:
_RankColumn =
RANKX (
'Table',
CALCULATE ( COUNT ( [Type] ), ALLEXCEPT ( 'Table', 'Table'[Type] ) ),
,
DESC,
DENSE
)
_TopN =
IF ( 'Table'[_RankColumn] <= 3, [Type], "Others" )
Result:
Please refer to the attachment below for details
For references:
Hope this helps.
Best Regards,
Community Support Team _ Zeon Zheng
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
@bleow , You can try measure like
RANKX(
table,
calculate(COUNT(table[Type])), ,
DESC,
Dense
)
if you are using above measure then this should also be measure
RETURN IF(
Ranking<=3,
[Type],
"OTHERS"
)
or consider top N
TOPN: https://www.youtube.com/watch?v=QIVEFp-QiOk&list=PLPaNVDMhUXGaaqV92SBD5X2hk3TMNlHhb&index=42
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 38 | |
| 37 | |
| 33 | |
| 32 | |
| 29 |
| User | Count |
|---|---|
| 132 | |
| 88 | |
| 82 | |
| 68 | |
| 64 |