Forum Discussion

PowerTom's avatar
PowerTom
Frequent Visitor
8 years ago
Solved

Difference between 3 types of CALCULATE

Hello,   I have a basic DAX question about CALCULATE. We have three types of CALCULATE statements :   Chutes Y-1 = VAR Year = CALCULATE([CurrentYear]-1)    RETURN CALCULATE(CALCULATE([Chutes];...
  • OwenAuger's avatar
    OwenAuger
    8 years ago

    Oops, you're quite right, I misread Measure 1 :)

     

    The answer is the same though: Measure 1 behaves the same as measures 2 & 3.

     

    Measure 1 applies the two filters in sequence, while Measures 2 & 3 apply the filters simultaneously, which is why one might expect the results could be different.

     

    To explain:

    Measure 1 first removes all 'Date' filters then adds a filter on 'Date'[Jaar], with the result being no filters on 'Date' except for the filter on 'Date'[Jaar].

     

    Measure 2 simultaneously removes all 'Date' filters and adds a filter on 'Date'[Jaar], which results in the intersection of the two filters.

    In DAX, the intersection of

    1. Removing filters on 'Date'[Jaar] with ALL('Date'), and
    2. Adding of a filter on the same column 'Date'[Jaar]

    is defined to be just the filter specified in (2), i.e. a filter on 'Date'[Jaar] with all other 'Date' filters removed, which is the same as in Measure 1.

     

    This makes sense, since the removal of a filter is conceptually the same as setting the filter to all possible values in the column, and intersecting this with a particular filter just results in the particular filter being applied.

     

    In general, filters applied in sequence with nested CALCULATEs won't necessarily be the same as filters applied simultaneously within a single CALCULATE. It just happens to work this way when the outer filter is an ALL(...) function.

     

    Regards,

    Owen