Forum Discussion
Conditional Top 20
- 9 years ago
Hi, Please try with this measure:
ProductionShow = IF ( HASONEVALUE ( T_Region[Region] ), [Sum of Production], IF ( COUNTROWS ( INTERSECT ( VALUES ( T_PU[Production Unit] ), TOPN ( 20, ALLSELECTED ( T_PU[Production Unit] ), [Sum of Production], DESC ) ) ) > 0, [Sum of Production], BLANK () ) )Regards
Victor
Lima - Peru
Anonymous
Hi, the dax code work very simple:
1. When a Region is selected show the productions unit to belong to The Regions Selected.
2. When None Region is selected. (This could be read like "All" the regions is selected)
Take The value of the Production Unit (Values) (One by One)
And another Table with The Top 20 of All Selected PUnits. (of All the Regions selected)
I Use The Intersect to evaluate if The Production Unit is included in the Top 20. When the Rows in the Intersect (Table) is greater than 0 means that this PUnit is in the Top 20 so calculate the Sum of Production. If is 0 then Blank(To don't show in the visual)
For every Production Unit repeat this evaluation.
ProductionShow =
IF (
HASONEVALUE ( T_Region[Region] ),
[Sum of Production],
IF (
COUNTROWS (
INTERSECT (
VALUES ( T_PU[Production Unit] ),
TOPN ( 20, ALLSELECTED ( T_PU[Production Unit] ), [Sum of Production], DESC )
)
)
> 0,
[Sum of Production],
BLANK ()
)
)
I hope this will be guide to understand the code.
Regards
Victor
Lima - Peru
Victor,
I see the logic now. You are comparing one by one the values of all production units with TOP 20 production units. So, this is an iteration process if you are going one by one. To my knowledge, neither COUNTROWS nor INTERSECT are the iterators. How is this iteration achieved?
Tks