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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
tvalente
Helper I
Helper I

How to do rank partition like SQL in DAX

Hi All,

 

I am trying to return a column where in SQL you would rank by partition and sort the date descending. I am successfully ranking the max insurance date but am struggling to return the insurance type along with the maximum date.

 

As per my original table VAR, I am trying to connect that value back to together but struggled. In my summarize statement, if I introduce [Insurance type], it returns the maximum date along with the insurance type. This returns more values. I just want the maximum date and then whatever the insurance type is return that in a table.

 

This also could just be a calculated column as well perhaps. 

 

MaxInsuranceStatus =
VAR vBaseTable =
ADDCOLUMNS (
SUMMARIZE (
'Employee List',
'Employee List'[Employee number],
'Employee List'[Employee name]
),
"@Date", MAX ( 'Employee List'[Insurance Date] )
)
VAR vRankTable =
ADDCOLUMNS ( vBaseTable, "@Rank", RANKX ( vBaseTable, [@Date],, DESC, DENSE ) )
VAR vTopRank =
FILTER ( vRankTable, [@Rank] = 1 )
Var OriginalTable =
SELECTCOLUMNS('Employee List',"Employee number",'Employee List'[Employee number],"Insurance Date",'Employee List'[Insurance Date],"Vaccination type",'Employee List'[Insurance type])
//Var FilterOriginal =
//FILTER(vTopRank,[@Date] = OriginalTable
RETURN
vTopRank

1 ACCEPTED SOLUTION

Found a solution from the sqlbi guys:

 

As below this works as a calculated column:

 

VaccineRank =
VAR CurrentEmployee = 'Employee List'[Employee number]
VAR EmployeesGroup =
FILTER (
'Employee List',
'Employee List'[Employee number] = CurrentEmployee
)
RETURN
RANKX (
EmployeesGroup,
'Employee List'[Vaccine Date],,DESC
)

View solution in original post

3 REPLIES 3
amitchandak
Super User
Super User

@tvalente ,  You need column rank or measure rank .

 

 

Column Rank = rankx(filter( 'Employee List', 'Employee List'[Employee number] = max('Employee List'[Employee number])) 'Employee List'[Insurance Date],,desc,dense)

 

measure Rank

Column Rank = rankx(allselected( 'Employee List'[Employee name], 'Employee List'[Employee number]) , max('Employee List'[Insurance Date]),,desc,dense)

 

 

For Rank Refer these links
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns

Full Power BI Video 20 Hours YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Thanks,

 

This did not work.

 

The result was this:

 

Employee nameEmployee numberInsurance typeInsurance DateColumn Rank
ABC1105Type AWednesday, 11 August 20211
ABC1105Type BWednesday, 19 May 20211

 

My desired result is this:

 

Employee nameEmployee numberInsurance typeInsurance DateColumn Rank
ABC1105Type AWednesday, 11 August 20211
ABC1105Type BWednesday, 19 May 20212

Found a solution from the sqlbi guys:

 

As below this works as a calculated column:

 

VaccineRank =
VAR CurrentEmployee = 'Employee List'[Employee number]
VAR EmployeesGroup =
FILTER (
'Employee List',
'Employee List'[Employee number] = CurrentEmployee
)
RETURN
RANKX (
EmployeesGroup,
'Employee List'[Vaccine Date],,DESC
)

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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