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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
CAPEconsulting
Helper III
Helper III

Rankx and summarized table

I have a complex table where a column is flagged as denominator based on some variables and another column is flagged as numerator based on other criteria. Then a measure of proportion is calculated as the sum of all items flagged ad numerator divided by all items flagged as denominator. This is working fine.

 

Now I need to rank the clients based on the proportion while filtering out the clients that have less than 10 as the denominator.

 

Just to work out my logic I did a calculated tables as follows

 

Table = FILTER(
SUMMARIZECOLUMNS(sun[Domain], sun[Date], sun[Attribute], sun[Account Name], sun[Territory], "Num", [Current Denominator], "Denom", [Current Denominator], "Score", [Current %]) , [Denom] > 10)
 
Then this table was used to create 
ranker =
VAR Ranky = RANKX( ALL('Table'[Account Name]), SUM( 'Table'[Score]), , ASC)
RETURN
IF( Ranky <= 5, SUM( 'Table'[Score]), BLANK())
 
This hence gives me the bar chart showing just the bottom 5 values.
 
Now I want to do the above as a measure rather than a physical table.
 
But when I try this  
 
RANKX ( FILTER
FILTER(
SUMMARIZECOLUMNS(sun[Domain], sun[Date], sun[Attribute], sun[Account Name], sun[Territory], "Num", [Current Denominator], "Denom", [Current Denominator], "Score", [Current %]) , [Denom] > 10), ALL(sun[Account Name])),  [Current %], , ASC, DENSE))
 
It keeps giving me all sort off errors like multiple filters were passed through rankx etc. I have amended many things but can't seem to replicate the physical table work in a virtual table measure based calculation.
 
Any help....
5 REPLIES 5
stevedep
Memorable Member
Memorable Member

Hi,

This is what I have:

 

rank = 
var __filtertbl = FILTER(ALL('Table');'Table'[Denominator]>10)
var __productsthatmeetfilter = CALCULATETABLE(ALLSELECTED('Table');__filtertbl)

return

//CALCULATE(CONCATENATEX(ALLSELECTED(Prods[Prod]);[Prod];"-"); __filtertbl) // to test / debug
MAXX('Table';IF('Table'[Denominator]>10;
RANKX(__productsthatmeetfilter;CALCULATE(MINX('Table';
'Table'[Numerator]/'Table'[Denominator]));;ASC;Skip)
; BLANK()))

 

As seen here:

denom.jpg

File is here

Please mark as solution if this works for you. Thumbs up for the effort is appreciated.

Kind regards, Steve. 

@stevedep that did not work. just to clarify numerator and denominator are measures and not columns. For example 
Current Denominator = VAR Maxdate = CALCULATE( MAX( sun[Date]), ALLSELECTED(sun[Domain]), ALLSELECTED( sun[Attribute] ), ALLSELECTED( Calendar[Date] ))
RETURN
CALCULATE( [MeasureSum] , FILTER( SUMMARIZE( sun, sun[Denom], sun[Date] ), sun[Denom] = "Denom" && sun[Date] = Maxdate ))

 

Since my post I have tried the following and it work for most of it

Rank =
VAR Maxdate = CALCULATE( MAX( sun[Date]), ALLSELECTED(sun[Domain]), ALLSELECTED( sun[Attribute] ), ALLSELECTED( Calendar[Date] ))
VAR RankingTable = FILTER( ALLSELECTED(sun[Account Name]), [Current Denominator] > 10)
RETURN
RANKX( RankingTable, CALCULATE([Current %], FILTER(VALUES(Calendar[Date]), Maxdate)), ,ASC,Dense)

 

But despite of the FILTER( ALLSELECTED(sun[Account Name]), [Current Denominator] > 10), it still ranks entities with denominator less than 10. So not sure what I am missing

@Ashish_Mathur @v-juanli-msft @Phil_Seamark any suggestions.

Also is there a way to visualise the account catgeory based on the top 5 account names in a card/ chart visualisation.

 
Additionally I am using this for the best score to just show the best score as a figure without having the need for account names.
VAR Tabless = ADDCOLUMNS( SUMMARIZE(sun, sun[Account Name], sun[Territory]), "Scores", [Current %], "Ranks", [Rank])
RETURN
MINX( Tabless, [Scores])

 

See using what I have the measure is still ranking an entity that has denominator less than 10.

Rank Issue.png

 

 

 

Also please see top 5 table works fine but when territory is introduced it goes haywire

 

Ranks.png

And it does not show just the top 5 anymore but starts showing all entities even though the measure uses top 5

Ranker.png

 

 

 

Perhaps you need to use nested interators to ensure values are calculated on the right level. 

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.