Forum Discussion
RankX with 2 fields
Hello All.
For some reason 1 RankX formula works but the other doesnt.
Below is Dax:
5 Replies
- parry2kSuper User
Anonymous check these post for rank
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
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-3-of-3-the-finaleI would ❤ Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos whoever helped to solve your problem. It is a token of appreciation!
- amitchandakSuper User
Anonymous , It Seems like you are creating a subcategory rank. Now rank will change based on context. So I rank a measure on product . If I use the product then it will show correct rank. But If Add Category, then it will show product rank inside the category.
But If add say Product ID then I will see all 1. In such case In need use All(product,prodcut_id) to make sure they work together
For Rank Refer these links
https://www.sqlbi.com/articles/use-of-rankx-in-power-bi-measures/
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
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale
https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/367415 - v-kelly-msftCommunity Support
Hi Anonymous ,
Your formulas are calculated columns,right?
If so ,modify them as below:
Product Rank (Name) = RANKX(FILTER(ALLSELECTED('(Dim) Product'),'(Dim) Product'[Product_Name] = EARLIER('(Dim) Product'[Product_Name])),[Master],,DESC,Dense)Product Rank (Category) = RANKX(FILTER(ALLSELECTED('(Dim) Product'),'(Dim) Product'[Category] =EARLIER('(Dim) Product'[Category] )),[Master],,DESC,Dense)Best Regards,
KellyDid I answer your question? Mark my post as a solution! - v-kelly-msftCommunity Support
Hello @Roberto456 ,
Your formulas are calculated columns, right?
If so, modify them as follows:
Product Rank (Name) = RANKX(FILTER(ALLSELECTED('(Dim) Product'),'(Dim) Product'[Product_Name] = EARLIER('(Dim) Product'[Product_Name])),[Master],,DESC,Dense)Product Rank (Category) = RANKX(FILTER(ALLSELECTED('(Dim) Product'),'(Dim) Product'[Category] =EARLIER('(Dim) Product'[Category] )),[Master],,DESC,Dense)Saludos
KellyDid I answer your question? Mark my position as a solution!- AnonymousNot applicable
Hello.
I found the solution.
No these are measures, for dynamic ranking.
The problem was, that unless I put in the 2nd field as the most granular part of the product (from the table being referenced) the ranking wouldnt work.
which is why category / product wouldn't work, (product wasnt the most granular field).
I had to duplicate the product table and make sure that product name was the most granular field and then reference that table instead.
I would have preffered to use a VAR table, but I couldnt find a way to RankX from it.