Aunque ¿estamos filtrando correctamente la tabla Calendar? ¡no! Recordemos que estamos trabajando en presencia de contexto de filtro y, antes de plantearse el cálculo, la máquina DAX identifica el contexto de filtro inicial. Si nos fijamos en la cifra de 2017:
el contexto de filtro inicial viene dado -ya lo sabemos- por las 365 filas visibles de la tabla calendario. Es decir, la tabla Calendar, cuando la máquina DAX empieza a ejecutar nuestra medida no es visible en su totalidad. A todos los efectos, en ese momento la tabla calendario es una tabla formada por 365 filas. Solamente.
De forma que, en nuestra medida (recordemos su código):
VAR __firstDate = DATE(2015, 1, 1)
VAR __lastDate = MAX('Calendar'[Date])
RETURN
CALCULATE(
[Sales],
FILTER(
'Calendar',
AND(
'Calendar'[Date] >= __firstDate,
'Calendar'[Date] <= __lastDate
)
)
)
cuando filtramos Calendar con la función FILTER, estamos filtrando una tabla ya de por sí filtrada. Y el nuevo filtro impuesto por FILTER no hace más que añadirse al que ya existía. Es decir, en ese punto la tabla Calendar contiene fechas entre el 1 de enero de 2017 y el 31 de diciembre de 2017, y estamos filtrándola (nuevamente) para que solo contenga fechas entre el 1 de enero de 2015 y el 31 de diciembre de 2017. ¿Cuál es el resultado de la función FILTER? Pues la misma tabla con la que llegábamos a dicha función, conteniendo las mismas 365 filas.