Procedimiento de cálculo

Revisemos el proceso seguido para obtener este resultado. Si nos fijamos en la cifra devuelta para algún año, por ejemplo, la de 2017:

Ventas del año anterior a 2017


 
ya sabemos el procedimiento: En primer lugar, identificar el contexto de filtro (inicial), definido en este caso por tener todas las filas visibles en todas las tablas menos en la tabla Calendar en la que las filas visibles son solo las 365 filas correspondientes a los 365 días de 2017 (lo que provoca el filtrado de la tabla Sales):

Contexto de filtro

 
A continuación, la máquina DAX va a nuestra medida, ve que se trata de un CALCULATE, hace una copia del contexto de filtro, examina los cambios a implementar (en nuestro caso, SAMEPERIODLASTYEAR) y los aplica a la copia del contexto de filtro que ha realizado (en nuestro caso, viendo qué filas están visibles en la tabla Calendar y seleccionando como visibles las filas equivalentes del año previo), llegando, de este modo, al contexto de filtro final. En nuestro caso esto supone dejar como visibles las 366 filas correspondientes al año 2016 (que fue bisiesto):

Contexto de filtro

Por último, examina la expresión a calcular (la medida [Sales] que se pasó como primer argumento de CALCULATE) y la evalúa en el contexto de filtro modificado, devolviendo las ventas de 2016 (aun cuando el contexto de filtro inicial decía que el año era 2017):

Ventas en 2016
En el año 2020 no hay ventas, pero sí existe en el calendario, motivo por el que aparece en la matriz con un valor vacío en la columna “Sales”. En la columna “Sales PY” sí aparece un valor pues en 2019 (el año previo) sí hubo ventas.

El proceso descrito se repite, por supuesto, para cada una de las filas de la matriz.