En este escenario deseamos evaluar una métrica (por ejemplo, la suma de ventas) para el total de fechas previas a una dada. Partimos de una tabla de ventas ("Ventas") en la que se incluye una fecha ("Fecha") y un precio de venta ("Precio final"):
Adicionalmente tenemos una tabla conteniendo un calendario que, en este escenario, no está enlazado con la tabla de ventas para evitar un filtrado automático, y una visualización tipo "segmentación" en la que seleccionamos un período de interés a partir de las fechas del calendario:
Tenemos ya creada una medida que totaliza las ventas:
Ventas = SUM(Ventas[Precio final])
Como se ha comentado, el objetivo es sumar las ventas previas al período que seleccionemos en la segmentación (es decir, solo nos interesa la fecha más antigua del período seleccionado en la segmentación). En pseudo-código sería:
Recalcula la medida "Ventas"
Para las fechas anteriores a la fecha mínima de la segmentación
Como la segmentación está filtrando el calendario (pues esta visualización se ha generado a partir de él), lo anterior sería equivalente a:
Recalcula la medida "Ventas"
Para las fechas anteriores a la fecha mínima del calendario
Este esquema encaja con la estructura de la función CALCULATE, añadiendo como filtro el contexto dado por la segunda condición:
CALCULATE(
Medida de Ventas;
Tabla de ventas tal que Ventas[Fecha] < Fecha mínima del calendario
)
Para concretar el filtrado vamos a recurrir a la función FILTER, que acepta como primer argumento una tabla y como segundo argumento un criterio de filtrado. En este caso la tabla a filtrar es la tabla de ventas y el criterio, que la fecha de venta sea menor que la menor fecha del calendario. El código quedaría de la siguiente forma:
Ventas previas = CALCULATE(
[Ventas];
FILTER(
Ventas;
Ventas[Fecha] < MIN(Calendario[Date])
)
)
Probemos el código seleccionando una fecha en el segmentador que incluya solo un par de ventas: