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

Data Days is here! Join us now for 60+ days of learning, challenges, and connection. Learn more

Reply
Arshadjehan
Helper I
Helper I

Count of records Based on RANKX

I have dynamically filtered the based based on a slicer options of:

Top 3, Top 5 and Top 10. I want to display number of records filtered , e.g when I select Top 3 , records returned after RANKX function may be 3 or more based on ties (I have used Dense option in RANKX) . So how can I show count of records on a card?

 

1 ACCEPTED SOLUTION

@Arshadjehan - Given the form of that RANKX calculation it must be a calculated column. Therefore, this should be something like the following:

 

Male = COUNTROWS(FILTER('Table',[Top N] <= 3 && [Gender]="M"))

Female = COUNTROWS(FILTER('Table',[Top N] <= 3 && [Gender]="F"))

 

 



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

6 REPLIES 6
amitchandak
Super User
Super User

@Arshadjehan , refer if this can help

https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/3...

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube
Greg_Deckler
Community Champion
Community Champion

@Arshadjehan -  I would think you should just be able to use:

Measure = COUNTROWS('Table')

Not really enough information to go on, please first check if your issue is a common issue listed here: https://community.powerbi.com/t5/Community-Blog/Before-You-Post-Read-This/ba-p/1116882

Also, please see this post regarding How to Get Your Question Answered Quickly: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

The most important parts are:
1. Sample data as text, use the table tool in the editing bar
2. Expected output from sample data
3. Explanation in words of how to get from 1. to 2. 



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Here is the sample data: tblResults

Auto IDRoll NoNameMarksGender
112324ABC515M
22323LMN525M
323234XYN535F
465655DEF525M
5345345PRS510F
.............    

Table has more than a million records.

 

As a first step I have to list only Top 3, Top 5 or Top 10 records

I am doing that by applying RANKX function as below:

Top N = RANKX(ALLSELECTED('tblResult'),[Marks],,,Dense)
 
I am getting the result for Top 3 in table visual as :
RankRoll NoNameMarksGender
312324ABC515M
22323LMN525M
123234XYN535F
265655DEF525M

 

Next I want to display number of student from Top N being Male or female on card visual as:

 

Male: 3

Female:1

 

Hope I have elobarated well now

@Arshadjehan - Given the form of that RANKX calculation it must be a calculated column. Therefore, this should be something like the following:

 

Male = COUNTROWS(FILTER('Table',[Top N] <= 3 && [Gender]="M"))

Female = COUNTROWS(FILTER('Table',[Top N] <= 3 && [Gender]="F"))

 

 



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler  That worked like a charm! Thanks man.

Just one thing needed: Since I am using Dense parameter in RANKX function , so i am having ties in the result. How can I add sequential serial number in the table vaisual as below: 

Serial NoPositionNameMarks
11ABC545
22DEF535
32GEF535
43LMO525
53XYZ525

 

@Arshadjehan - So, generally adding an index in DAX is considered impossible. However, there is a method for doing it.

https://community.powerbi.com/t5/Quick-Measures-Gallery/The-Mythical-DAX-Index/m-p/1093214#M528

 

The other way would be to add a tiny random number to your rank/topn calculation

Top N = RANKX(ALLSELECTED('tblResult'),[Marks],,,Dense) + RANDBETWEEN(.001,.009)

and then you could have a column:

Index = COUNTROWS(FILTER('Table',[Top N]<=EARLIER([Top N])))

This will, in effect break your ties.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Fabric Data Days is here Carousel

Fabric Data Days 2026

Don't miss out on Data Days, June 15 through August 7. Learn Fabric, Power BI, SQL, AI and more.

May Power BI Update Carousel

Power BI Monthly Update - May 2026

Check out the May 2026 Power BI update to learn about new features.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.