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.
Hello,
I have created a dynamic Top N calculation which follows the DAX logic in an article linked here. I have also pasted this DAX at the bottom this message.
Whilst this measure works as intended, when used in a time series line graph it evaluates the top N selection at each data point. Instead, I want it to evaluate across the entire data range in the visualisation - the same way the Top N filter works when applied to a graph.
Please see example below:
Would be extremely grateful for assistance on this one -- have sunk considerable time in without any result!
DAX from linked article above:
Top Orders | Cities =
VAR N = 'Top N'[Top N Value]
-- Get the top N cities by total orders
VAR Top_Cities =
TOPN(
N,
ALLSELECTED('Cities'[City]),
[Total Orders]
)
-- Calculate the total orders for the Top N cities
VAR TopN_Orders =
CALCULATE(
[Total Orders],
KEEPFILTERS(Top_Cities)
)
-- Calculate total orders for all selected cities
VAR All_Orders =
CALCULATE(
[Total Orders],
ALLSELECTED(Cities)
)
-- Calculate the total orders for cities that are not in the Top N
VAR Other_Orders =
All_Orders - CALCULATE([Total Orders], Top_Cities)
VAR Result =
SWITCH(
TRUE(),
NOT ISINSCOPE(Cities[City]), All_Orders,
SELECTEDVALUE(Cities[City]) = "Others", Other_Orders,
TopN_Orders
)
RETURN
Result
Solved! Go to Solution.
I think you need to tweak the Top_Cities variable to use ALLSELECTED('Date')
Top Orders | Cities =
VAR N = 'Top N'[Top N Value] -- Get the top N cities by total orders
VAR Top_Cities =
CALCULATETABLE (
TOPN ( N, ALLSELECTED ( 'Cities'[City] ), [Total Orders] ),
ALLSELECTED ( 'Date' )
) -- Calculate the total orders for the Top N cities
VAR TopN_Orders =
CALCULATE ( [Total Orders], KEEPFILTERS ( Top_Cities ) ) -- Calculate total orders for all selected cities
VAR All_Orders =
CALCULATE ( [Total Orders], ALLSELECTED ( Cities ) ) -- Calculate the total orders for cities that are not in the Top N
VAR Other_Orders =
All_Orders - CALCULATE ( [Total Orders], Top_Cities )
VAR Result =
SWITCH (
TRUE (),
NOT ISINSCOPE ( Cities[City] ), All_Orders,
SELECTEDVALUE ( Cities[City] ) = "Others", Other_Orders,
TopN_Orders
)
RETURN
Result
I think you need to tweak the Top_Cities variable to use ALLSELECTED('Date')
Top Orders | Cities =
VAR N = 'Top N'[Top N Value] -- Get the top N cities by total orders
VAR Top_Cities =
CALCULATETABLE (
TOPN ( N, ALLSELECTED ( 'Cities'[City] ), [Total Orders] ),
ALLSELECTED ( 'Date' )
) -- Calculate the total orders for the Top N cities
VAR TopN_Orders =
CALCULATE ( [Total Orders], KEEPFILTERS ( Top_Cities ) ) -- Calculate total orders for all selected cities
VAR All_Orders =
CALCULATE ( [Total Orders], ALLSELECTED ( Cities ) ) -- Calculate the total orders for cities that are not in the Top N
VAR Other_Orders =
All_Orders - CALCULATE ( [Total Orders], Top_Cities )
VAR Result =
SWITCH (
TRUE (),
NOT ISINSCOPE ( Cities[City] ), All_Orders,
SELECTEDVALUE ( Cities[City] ) = "Others", Other_Orders,
TopN_Orders
)
RETURN
Result
Hi John,
This worked exactly as hoped. Thank you so much.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.
User | Count |
---|---|
13 | |
11 | |
10 | |
7 | |
6 |
User | Count |
---|---|
13 | |
12 | |
12 | |
8 | |
8 |