La medida que habíamos creado a mano para el cálculo de las ventas totales acumuladas desde el 1 de enero de 2015 (primer año para el que hay ventas en nuestro dataset) fue la siguiente:
VAR __firstDate = DATE(2015, 1, 1)
VAR __lastDate = MAX('Calendar'[Date])
RETURN
CALCULATE(
[Sales],
FILTER(
ALL('Calendar'),
AND(
'Calendar'[Date] >= __firstDate,
'Calendar'[Date] <= __lastDate
)
)
)
Básicamente, identificábamos el primer día de interés (1/1/2015) y el último (fecha más reciente “visible” en el calendario), y calculábamos las ventas aplicando al calendario un filtro que dejase visibles solo las fechas entre aquellas dos (incluyéndolas). Usando la función DATESBETWEEN podemos sustituir la función FILTER y simplificar la expresión sin que conceptualmente cambie lo que estamos haciendo:
VAR __firstDate = DATE(2015, 1, 1)
VAR __lastDate = MAX('Calendar'[Date])
RETURN
CALCULATE(
[Sales],
DATESBETWEEN(
'Calendar'[Date],
__firstDate,
__lastDate
)
)
Obsérvese que, con DATESBETWEEN, no es necesario limpiar los filtros aplicados al calendario (con ALL(Calendar)) pues esto es algo que la función DATESBETWEEN realiza de forma automática.