Forum Discussion
icdns
4 years agoPost Patron
Dynamic based on filters selected: Top 5 and Others (RANK)
Hi everyone, Would like to ask for your help as I have a list of Categories and I want to group them by Top 5 and the rest will be grouped as "Others" and as I filter my dimension the Ranking of...
- 4 years ago
Hi,
Thank you for your message.
Could you please check the below and the attached pbix file, whether it suits your requirement?
New Table 2 = VAR _topNnumber = 5 VAR _totalsales = SUM ( Sales2[Sales] ) VAR _topfivesales = CALCULATE ( SUM ( Sales2[Sales] ), TOPN ( 5, SUMMARIZE ( Sales2, Sales2[Category] ), CALCULATE ( SUM ( Sales2[Sales] ) ), DESC ) ) VAR _topfivetable = ADDCOLUMNS ( TOPN ( _topNnumber, SUMMARIZE ( Sales2, Sales2[Category] ), CALCULATE ( SUM ( Sales2[Sales] ) ), DESC ), "@Sales", CALCULATE ( SUM ( Sales2[Sales] ) ), "@Ranking", RANKX ( SUMMARIZE ( Sales2, Sales2[Category] ), CALCULATE ( SUM ( Sales2[Sales] ) ), , DESC ), "@contribution", FORMAT ( CALCULATE ( SUM ( Sales2[Sales] ) ) / SUM ( Sales2[Sales] ), "#0.00%" ) ) VAR _otherstable = { ( "Others", _totalsales - _topfivesales, _topNnumber + 1, FORMAT ( ( _totalsales - _topfivesales ) / _totalsales, "#0.00%" ) ) } RETURN UNION ( _topfivetable, _otherstable )
Jihwan_Kim
4 years agoSuper User
Hi,
Thank you for your message.
Could you please check the below and the attached pbix file, whether it suits your requirement?
New Table 2 =
VAR _topNnumber = 5
VAR _totalsales =
SUM ( Sales2[Sales] )
VAR _topfivesales =
CALCULATE (
SUM ( Sales2[Sales] ),
TOPN (
5,
SUMMARIZE ( Sales2, Sales2[Category] ),
CALCULATE ( SUM ( Sales2[Sales] ) ), DESC
)
)
VAR _topfivetable =
ADDCOLUMNS (
TOPN (
_topNnumber,
SUMMARIZE ( Sales2, Sales2[Category] ),
CALCULATE ( SUM ( Sales2[Sales] ) ), DESC
),
"@Sales", CALCULATE ( SUM ( Sales2[Sales] ) ),
"@Ranking",
RANKX (
SUMMARIZE ( Sales2, Sales2[Category] ),
CALCULATE ( SUM ( Sales2[Sales] ) ),
,
DESC
),
"@contribution", FORMAT ( CALCULATE ( SUM ( Sales2[Sales] ) ) / SUM ( Sales2[Sales] ), "#0.00%" )
)
VAR _otherstable =
{
( "Others", _totalsales - _topfivesales, _topNnumber + 1, FORMAT ( ( _totalsales - _topfivesales ) / _totalsales, "#0.00%" ) )
}
RETURN
UNION ( _topfivetable, _otherstable )
icdns
4 years agoPost Patron
Hi Jihwan_Kim ,
Thank you so much! This one worked! 🙂
However, is it possible to exclude one Category from the Ranking? Let's say the Kitchen..
So in this case Car Accessories is the top 1 🙂 And also can be dynamically filtered by a dimension? Lets say the store code? 🙂
| Category | Rank | Sales | Sales Contribution % |
| Kitchen | 1 | 30,733 | 17.18% |
| Car Accessories | 2 | 29,864 | 16.69% |
| School Supplies | 3 | 26,695 | 14.92% |
| Food Groceries | 4 | 23,308 | 13.03% |
| Pet Supplies | 5 | 19,764 | 11.05% |
| OTHERS | 6 | 48,576 | 27.15% |