Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hi,
I want to create the graph below, where it will show the top 5 specialties by cost in the period (I did it manually, by grouping, but these 5 specialties should change, depending the date filtered)
Based on this post (https://community.powerbi.com/t5/Desktop/Show-Top-N-and-sum-up-the-Others-as-a-value/m-p/313063#M138...), I'm almost there. I've got this chart below, where it's showing different top 5 specialties for each month, and not the top 5 of all the period. Can you help me?
This is my database structure
And these are my measures:
Specialties = UNION(Values(Example[Specialties]); ROW("Specialties"; "Others"))
Specialtie Rank = RANKX(ALL('Specialties'[Specialties]); CALCULATE(SUM(Example[Claim])))
Total with Others = if([Specialtie Rank] <= 5; CALCULATE(SUM(Example[Claim])); if(HASONEVALUE('Specialties'[Specialties]); if(values('Specialties'[Specialties]) = "Others"; sumx(filter(all('Specialties'[Specialties]); [Specialtie Rank] > 5); CALCULATE(SUM(Example[Claim])) ) ) ))
Thank you in advance.
Solved! Go to Solution.
Hi@ fabiocovre
You can use this measure as below:
Specialtie Rank 2 = VAR allMonthYear = CALCULATE ( COUNT ( 'Table'[MonthYear] ), ALL ( 'Table' ), ALL ( Example ) ) VAR selectedMonthYear = CALCULATE ( COUNT ( 'Table'[MonthYear] ), ALL ( Example[MonthYear] ) ) RETURN IF ( HASONEVALUE ( 'Table'[MonthYear] ), RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ) ) ), IF ( selectedMonthYear > 1 && selectedMonthYear < allMonthYear, RANKX ( ALLSELECTED ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALL ( 'Example'[MonthYear] ) ) ), IF ( selectedMonthYear = allMonthYear, RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALLEXCEPT ( Example, Specialties[Specialties] ) ) ), RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALLEXCEPT ( Example, Specialties[Specialties] ) ) ) ) ) )
And when creating a relationship between Example and Table , setting cross filter direction: Single
Result:
Here is demo, please try it
https://www.dropbox.com/s/aav3f2g16zb92t6/Top%20N%20and%20Others%20-%20monthly.pbix?dl=0
Best Regards,
Lin
Hi,
there's also a blog post that might help (check for 1b)
https://livingandcoding.com/blog/top-n-others-power-bi/
Regards!
Hi@ fabiocovre
You can use this measure as below:
Specialtie Rank 2 = VAR allMonthYear = CALCULATE ( COUNT ( 'Table'[MonthYear] ), ALL ( 'Table' ), ALL ( Example ) ) VAR selectedMonthYear = CALCULATE ( COUNT ( 'Table'[MonthYear] ), ALL ( Example[MonthYear] ) ) RETURN IF ( HASONEVALUE ( 'Table'[MonthYear] ), RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ) ) ), IF ( selectedMonthYear > 1 && selectedMonthYear < allMonthYear, RANKX ( ALLSELECTED ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALL ( 'Example'[MonthYear] ) ) ), IF ( selectedMonthYear = allMonthYear, RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALLEXCEPT ( Example, Specialties[Specialties] ) ) ), RANKX ( ALL ( Specialties[Specialties] ), CALCULATE ( SUM ( Example[Claim] ), ALLEXCEPT ( Example, Specialties[Specialties] ) ) ) ) ) )
And when creating a relationship between Example and Table , setting cross filter direction: Single
Result:
Here is demo, please try it
https://www.dropbox.com/s/aav3f2g16zb92t6/Top%20N%20and%20Others%20-%20monthly.pbix?dl=0
Best Regards,
Lin
Lin,
You are amazing. Thank you very much for that!!!
Best regards,
Fabio
Hi,@fabiocovre
After my research , you can do these follow my steps like below:
STEP1:
Add rank measure
Specialtie Rank 2 = if(HASONEFILTER('Table'[MonthYear]),RANKX(ALL(Specialties[Specialties]), CALCULATE(SUM(Example[Claim]))),RANKX(ALL(Specialties[Specialties]), CALCULATE(SUM(Example[Claim]),ALLEXCEPT(Example,Specialties[Specialties]))))
then
Total with Others = if([Specialtie Rank 2] <= 5, CALCULATE(SUM(Example[Claim])), if(HASONEVALUE('Specialties'[Specialties]), if(values('Specialties'[Specialties]) = "Others", sumx(filter(all('Specialties'[Specialties]), [Specialtie Rank 2] > 5), CALCULATE(SUM(Example[Claim])) ) ) ))
STEP 2:
The slicer should be from the third table
Table = VALUES(Example[MonthYear])
Result:
Here is my DEMO,please try it
https://www.dropbox.com/s/aav3f2g16zb92t6/Top%20N%20and%20Others%20-%20monthly.pbix?dl=0
Best Regards,
Lin
Hi Lin,
It works when I filter only one month, but when I try to filter more than 1 month, it doesn't work... As you can see in the picture below, Urologia should be 5th and Obstetricia the 6th.
Thank you very much for your help!
Regards,
Fabio
Hi@ fabiocovre
You can try to use ALLEXCEPT function in the measure:
Specialtie Rank = RANKX(ALL(Specialties[Specialties]), CALCULATE(SUM(Example[Claim]),ALLEXCEPT(Example,Specialties[Specialties])))
Basic data
Top 5 is :F,E,D,C,B and others
Now it shows the top 5 of all the period in the column chart
Best Regards,
Lin
Hi Lin, thank you for your answer. It's almost there...
It worked, but when I filter a specific month, the ranking remain the same. The top 5 should change to Cir Toracica, Neurologia, Ortopedia, Cir Ap. Digestivo and Cir Cardiaca. Do you have any idea what can I do?
Regards,
Fábio
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.
User | Count |
---|---|
143 | |
85 | |
66 | |
51 | |
45 |
User | Count |
---|---|
216 | |
89 | |
82 | |
66 | |
57 |