Forum Discussion
SELECTEDVALUE doesn't work indirectly
Hello,
When I use this measure:
Sales Selected Year = CALCULATE(SUM(fSales[Value]), FILTER(ALL(dCalendar), dCalendar[Year] = SELECTEDVALUE(dCalendar[Year]))
It brings all sales from 2018 (considering I did the filter for only that year in a slicer visual). However, if I define:
Selected Year = SELECTEDVALUE(dCalendar[Year])
and then rewrite the expression as:
Sales Selected Year = CALCULATE(SUM(fSales[Value]), FILTER(ALL(dCalendar), dCalendar[Year] = [Selected Year]))
It brings the sales from all years from the dCalendar table, even tought I filtered just the year of 2018 in the page.
How does that happen? Can't I use a value returned in a measure resulted by SELECTEDVALUE function to pass as a filter?
*There is a date relationship between fSales and dCalendar.
Thanks.
Welcome to the fun world of DAX filter context.
The CALCULATE function is quite magical in the way it can create a new filter context for the expression to work with.
If you would like your calculation to work the way you want, please try this.
Sales Selected Year = VAR x = [Selected Year] RETURN CALCULATE( SUM(fSales[Value]), FILTER(ALL(dCalendar), dCalendar[Year] = x ) )
2 Replies
- Phil_SeamarkMicrosoft Employee
Welcome to the fun world of DAX filter context.
The CALCULATE function is quite magical in the way it can create a new filter context for the expression to work with.
If you would like your calculation to work the way you want, please try this.
Sales Selected Year = VAR x = [Selected Year] RETURN CALCULATE( SUM(fSales[Value]), FILTER(ALL(dCalendar), dCalendar[Year] = x ) )- FelipeGualbertoFrequent Visitor
Thanks, Phil!
Strangely enough, the calculation is working now in both methods in another computer.
But it is very good to learn this technique, so now I know that sometimes I have to access a measure indirectly using a variable.
Have a good day!