Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
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 the categories will by dynamic depending on the filter selected.
Here's my list:
Sales Contribution = (Sales / Total Sales)
| Category | Rank | Sales | Sales Contribution % |
| Kitchen | 1 | 97,000 | 20.86% |
| Car Accessories | 2 | 89,566 | 19.26% |
| School Supplies | 3 | 78,901 | 16.97% |
| Food Groceries | 4 | 55,322 | 11.90% |
| Pet Supplies | 5 | 45,888 | 9.87% |
| Household Supplies | 6 | 33,888 | 7.29% |
| Phone Gadgets | 7 | 21,401 | 4.60% |
| Bathroon Accessories | 8 | 18,678 | 4.02% |
| Garden Accessories | 9 | 13,899 | 2.99% |
| Baking Materials | 10 | 10,444 | 2.25% |
| Overall Total | 464,987 | 100.00% |
And I want my result to be like this:
As you can see, the Sales & Sales Contribution of Others are added added.
| Category | Rank | Sales | Sales Contribution % |
| Kitchen | 1 | 97,000 | 20.86% |
| Car Accessories | 2 | 89,566 | 19.26% |
| School Supplies | 3 | 78,901 | 16.97% |
| Food Groceries | 4 | 55,322 | 11.90% |
| Pet Supplies | 5 | 45,888 | 9.87% |
| Others (Excluding the top 5) | 98,310 | 21.14% |
I tried creating another table with Category & Others and doing RankX but I'm not getting the result I want 😞
Solved! Go to Solution.
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 )
Hi @Jihwan_Kim
Sorry I can't give you the exact powerbi file due to privacy concern but I can share you a similar data set. 🙂
Data set:
| Store Code | Category | Sales |
| Store A | Kitchen | 10,000 |
| Store B | Kitchen | 10,500 |
| Store C | Kitchen | 10,233 |
| Store A | Car Accessories | 9,900 |
| Store B | Car Accessories | 9,976 |
| Store C | Car Accessories | 9,988 |
| Store A | School Supplies | 8,876 |
| Store B | School Supplies | 8,865 |
| Store C | School Supplies | 8,954 |
| Store A | Food Groceries | 7,655 |
| Store B | Food Groceries | 7,765 |
| Store C | Food Groceries | 7,888 |
| Store A | Pet Supplies | 6,666 |
| Store B | Pet Supplies | 6,655 |
| Store C | Pet Supplies | 6,443 |
| Store A | Household Supplies | 5,476 |
| Store B | Household Supplies | 5,463 |
| Store C | Household Supplies | 5,577 |
| Store A | Bathroon Accessories | 4,888 |
| Store B | Bathroon Accessories | 4,909 |
| Store C | Bathroon Accessories | 4,382 |
| Store A | Garden Accessories | 3,788 |
| Store B | Garden Accessories | 3,888 |
| Store C | Garden Accessories | 3,222 |
| Store A | Baking Materials | 2,100 |
| Store B | Baking Materials | 2,000 |
| Store C | Baking Materials | 2,883 |
| TOTAL | 178,940 |
Expectation:
| 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% |
| Overall Total | 178,940 | 100.00% |
Thank you in advance!
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 )
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% |
Hi,
Please check the below picture and the attached pbix file.
It is for creating a new table.
New Table =
VAR _totalsales =
SUM ( Sales[Sales] )
VAR _topfivesales =
CALCULATE (
SUM ( Sales[Sales] ),
TOPN ( 5, Sales, CALCULATE ( SUM ( Sales[Sales] ) ), DESC )
)
VAR _topfivetable =
ADDCOLUMNS (
TOPN ( 5, Sales, CALCULATE ( SUM ( Sales[Sales] ) ), DESC ),
"@Ranking", RANKX ( Sales, CALCULATE ( SUM ( Sales[Sales] ) ),, DESC ),
"@contribution", FORMAT ( CALCULATE ( SUM ( Sales[Sales] ) ) / SUM ( Sales[Sales] ), "#0.00%" )
)
VAR _otherstable =
{
( "Others", _totalsales - _topfivesales, "otherranking", FORMAT ( ( _totalsales - _topfivesales ) / _totalsales, "#0.00%" ) )
}
RETURN
UNION ( _topfivetable, _otherstable )
Hi @Jihwan_Kim ,
I tried your formula but I am getting this error..
"Each table argument of 'UNION' must have the same number of columns."
😞
Hi,
I think your sales table has more columns than what I have in my sample pbix file.
Please share your sample pbix file's link, and then I can try to look into it to come up with a more relevant solution for your dataset.
Thanks.
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!