Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply

Top 10,20,30 Values using Dynamic Slicer

Hi There ,

 

I am creating a report where i have data in table which includes column like  (Unit Sold, Revenue, Order Date ,Product Id ,Product Name ) and i am trying to create dynamic table where i have a slicer of Top 10 ,20,30,50,500 but i want to filter my data when i clicked on Top 10 so it will give me top 10 productsID, Product Name and Revenue and similarly if i click on Top 20 it will shows me data for Top 20 productid, product name and revenue .

Please see below sample data for more understanding :
Table 1Sample_Canvas.JPG

Order Date Product Id Product NameRevenueUntis Sold
05/16/2021110490Sunslik5.615
05/17/20211307555Jelly Water70.5111
05/18/20211420880Hair Removal100.5145
05/19/20211421935Lubricant 1512
05/20/20211373935Airborne145.4545

 

Please see the attached file  for more calrifaction and if anyone can help me out in this ?

 

Thank you in advance ,

Ashish 

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi  @Ashish_kumar12 ,

Here are the steps you can follow:

1. Create a table.

v-yangliu-msft_0-1622536462966.png

2. Create measure.

Measure_rank =
RANKX(ALLSELECTED('Table'),CALCULATE(SUM('Table'[Revenue])),,DESC)
Measure_flag =
var _top=SELECTEDVALUE(Slice[Top])
return
IF([Measure_rank]<=_top,1,0)

3. Set Sort by-[ Measure_rank] and Sort ascending.

v-yangliu-msft_1-1622536462974.png

4. Take the [Top] column of the Slice table as the slicer, put measure[Measure_flag] into the Filter, and set is=1, apply filter.

v-yangliu-msft_2-1622536462977.png

5. Result.

When 10 is selected, the top 10 data will be displayed:

v-yangliu-msft_5-1622536545083.png

 

When 20 is selected, the top 20 data will be displayed:

v-yangliu-msft_6-1622536545086.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

6 REPLIES 6
Anonymous
Not applicable

Hi  @Ashish_kumar12 ,

Here are the steps you can follow:

1. Create a table.

v-yangliu-msft_0-1622536462966.png

2. Create measure.

Measure_rank =
RANKX(ALLSELECTED('Table'),CALCULATE(SUM('Table'[Revenue])),,DESC)
Measure_flag =
var _top=SELECTEDVALUE(Slice[Top])
return
IF([Measure_rank]<=_top,1,0)

3. Set Sort by-[ Measure_rank] and Sort ascending.

v-yangliu-msft_1-1622536462974.png

4. Take the [Top] column of the Slice table as the slicer, put measure[Measure_flag] into the Filter, and set is=1, apply filter.

v-yangliu-msft_2-1622536462977.png

5. Result.

When 10 is selected, the top 10 data will be displayed:

v-yangliu-msft_5-1622536545083.png

 

When 20 is selected, the top 20 data will be displayed:

v-yangliu-msft_6-1622536545086.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

A small query - I have tried to apply this solution,my dimension is a field parameter with 4 columns coming from table 'Facts' ,I when I apply the same logic its not giving correct results .

Measure_Rank=
RANKX(ALLSELECTED('Facts'),abs([CM]-[LM]),,DESC)  anything to do differently?
 
Anonymous
Not applicable

Hi  @Ashish_kumar12 ,

Here are the steps you can follow:

1. Create a table.

v-yangliu-msft_0-1621996944066.png

2. Create calculated column

rank = RANKX('Table','Table'[Revenue],,DESC)

3. Create measure.

Flag =
var _top=SELECTEDVALUE(Slice[Top])
return
IF(MAX('Table'[rank])<=_top,1,0)

4. Set Sort by-rank and Sort ascending.

v-yangliu-msft_1-1621996944083.png

5. Take the [Top] column of the Slice table as the slicer, put measure[Flag] into the Filter, and set is=1, apply filter.

v-yangliu-msft_2-1621996944087.png

6. Result.

When 10 is selected, the top 10 data will be displayed:

v-yangliu-msft_3-1621996944090.png

When 20 is selected, the top 20 data will be displayed:

v-yangliu-msft_4-1621996944094.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi Liu,

 

Thank you so much for your response .

I tried the same measures which you have suggested and i got this error:

Ashish_kumar12_0-1622460070848.png

Also when i checked my Rank measure i got the same value in each row "1"

Ashish_kumar12_1-1622460129236.png

 

amitchandak
Super User
Super User

@Ashish_kumar12 , You can create TOPN with help from what if

 

 

example

measure =

var _n = selectedvalue(whatif[param])

return

CALCULATE([Revenue],TOPN(_n,allselected(Table[productsID]),[Revenue],DESC),VALUES(Table[productsID]))

 

 

refer

https://www.youtube.com/watch?v=UAnylK9bm1I

 

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Hi Amit ,

 

Thank you for your response .

 

I tried your method but it didn't work , so i found this :

 

https://www.youtube.com/watch?v=QtEt-QI3oe4

that's what i was looking for ,But thank you so much for your help 

Regards

Ashish 

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.