Forum Discussion
Power BI - Ranking on a Matrix Visual
Hi Sanju_BI ,
You can use INSCOPE function with RANK function to get desired output . OR try using DENSE function.
Thanks,
Pratyasha Samal
If you found this post helpful, please give Kudos C
- Sanju_BI3 years agoFrequent Visitor
Here is my Measure, that i wrote for Ranking.
Rank =
VAR ismfFiltered = ISINSCOPE('Customer GP Data'[New MF Code & Parent Name])
VAR isCustFiltered = ISINSCOPE('Customer GP Data'[Customer Name & Code])RETURN
SWITCH(
TRUE(),
AND(ismfFiltered, NOT(isCustFiltered)),
IF(
COUNTROWS('Customer GP Data') > 0,
RANKX(
FILTER(
ALLSELECTED('Customer GP Data'[New MF Code & Parent Name]),
[Total Est GP] > 0
),
[Total Est GP],
,
DESC,
Dense
),
BLANK()
),
isCustFiltered,
IF(
COUNTROWS('Customer GP Data') > 0,
RANKX(
FILTER(
ALLSELECTED('Customer GP Data'[Customer Name & Code]),
[Total Est GP] > 0
),
[Total Est GP],
,
DESC,
Dense
),
BLANK()
),
BLANK()
)- pratyashasamal3 years agoMemorable Member
Sanju_BI , have you created heirarchy for the parent and child columns ?
Thanks,
Pratyasha Samal
Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C- Sanju_BI3 years agoFrequent Visitor
Yes!. did so.,
Customer GP Data'[New MF Code & Parent Name] - That's my Parent field
Customer GP Data'[Customer Name & Code] - That's my child field
- rubayatyasmin3 years agoCommunity Champion
The measure you've created seems to rank the parent and child categories separately, so when you expand using the + icon symbol, which drills down into the child values from a specific parent level, the rank measure might be taking into account only the child categories and ignoring the parent category. The use of ALLSELECTED could be part of the problem, since it may be only taking into account the level you've drilled down to.
A common workaround to this issue is to include an additional condition in the measure that checks for the level of hierarchy you're at and then calculates the rank accordingly.
Try modifying your measure like this:
Rank =
VAR CurrentLevel =
SWITCH (
TRUE,
ISINSCOPE ( 'Customer GP Data'[New MF Code & Parent Name] ), 1,
ISINSCOPE ( 'Customer GP Data'[Customer Name & Code] ), 2,
BLANK ()
)
VAR ismfFiltered = (CurrentLevel = 1)
VAR isCustFiltered = (CurrentLevel = 2)
RETURN
SWITCH(
TRUE(),
AND(ismfFiltered, NOT(isCustFiltered)),
IF(
COUNTROWS('Customer GP Data') > 0,
RANKX(
FILTER(
ALL('Customer GP Data'[New MF Code & Parent Name]),
[Total Est GP] > 0
),
[Total Est GP],
,
DESC,
Dense
),
BLANK()
),
isCustFiltered,
IF(
COUNTROWS('Customer GP Data') > 0,
RANKX(
FILTER(
ALL('Customer GP Data'[Customer Name & Code]),
[Total Est GP] > 0
),
[Total Est GP],
,
DESC,
Dense
),
BLANK()
),
BLANK()
)Please note that the ALL function has been used instead of ALLSELECTED. The reason for this is that ALLSELECTED respects the context filters, while ALL ignores any filter that might be affecting the data model, which might cause an issue when ranking.
I hope this helps!
- Sanju_BI3 years agoFrequent Visitor
Tried your above suggestions, makes no difference. I don't believe that the issue lies with my DAX as from the first Screenshot you can see my Rank Measure works fine when I'm using the Expand down all level hierarchy.
However just using the + icon to expand from parent level thats not showing correctly as per my second screenshot.