Forum Discussion

FelipeGualberto's avatar
FelipeGualberto
Frequent Visitor
8 years ago
Solved

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_Seamark's avatar
    Phil_Seamark
    Microsoft 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 )
            )
    • FelipeGualberto's avatar
      FelipeGualberto
      Frequent 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!