DAX: Inteligencia de Tiempo
Análisis Temporal y Comparativas Históricas – Decil.com
La Regla de Oro: La Tabla Calendario
Las funciones de Inteligencia de Tiempo (Time Intelligence) en DAX permiten calcular acumulados, comparar meses contra el año anterior o proyectar tendencias. Sin embargo, ninguna de estas funciones trabajará correctamente si no tienes una Tabla Calendario en tu modelo. Esta tabla debe cumplir tres requisitos estrictos:
- Tener una columna de tipo “Fecha” (Date).
- Contener fechas continuas (sin saltos de días) desde el 1 de enero del primer año de tus datos, hasta el 31 de diciembre del último año.
- Estar marcada oficialmente en Power BI como “Tabla de fechas” (Mark as Date Table).
TOTALYTD / QTD / MTD
Medida
Explicación Técnica
Calculan el valor acumulado desde el inicio de un período hasta la fecha actual en el contexto de filtro.
• TOTALYTD (Year-To-Date): Acumula desde el 1 de enero hasta la fecha evaluada. Se reinicia cada año nuevo.
• TOTALQTD (Quarter-To-Date): Acumula desde el inicio del trimestre. Se reinicia cada 3 meses.
• TOTALMTD (Month-To-Date): Acumula desde el inicio del mes. Se reinicia cada día 1.
• TOTALYTD (Year-To-Date): Acumula desde el 1 de enero hasta la fecha evaluada. Se reinicia cada año nuevo.
• TOTALQTD (Quarter-To-Date): Acumula desde el inicio del trimestre. Se reinicia cada 3 meses.
• TOTALMTD (Month-To-Date): Acumula desde el inicio del mes. Se reinicia cada día 1.
Ejemplo Práctico: Cierre Anual de Ventas
DAX – Medida de Acumulación
Ingresos Acumulados YTD =
TOTALYTD(
[Ingreso Total Bruto],
‘Calendario'[Fecha]
)
Contexto: Si pones esta medida en una tabla visual por meses, verás cómo enero muestra su venta normal, febrero suma enero+febrero, marzo suma el trimestre completo, y así sucesivamente hasta diciembre. El próximo enero volverá a partir desde cero.
SAMEPERIODLASTYEAR
Tabla
Modificador
Explicación Técnica
Técnicamente, esta función devuelve una tabla con una columna de fechas desplazadas exactamente un año hacia el pasado. En la práctica, casi siempre se inserta como filtro dentro de un
CALCULATE para realizar comparativas de crecimiento interanual (YoY – Year over Year).
Ejemplo Práctico: Comparativa Fiestas Patrias
DAX – Medida Comparativa
Ventas Año Pasado =
CALCULATE(
[Ingreso Total Bruto],
SAMEPERIODLASTYEAR(‘Calendario'[Fecha])
)
Contexto: Si en el segmentador de fechas seleccionas “Septiembre 2024”,
CALCULATE usará esta función para modificar el filtro y buscar las ventas ocurridas exactamente en “Septiembre 2023”. Ideal para medir el desempeño de campañas estacionales en Chile (Fiestas Patrias, Navidad).
DATEADD
Tabla
Modificador
Explicación Técnica
Es la versión flexible e hiper-vitaminada de
SAMEPERIODLASTYEAR. Mientras que la anterior solo mira 1 año hacia atrás, DATEADD te permite mover el contexto de fechas la cantidad de intervalos que desees hacia el futuro (positivo) o el pasado (negativo). Los intervalos soportados son DAY, MONTH, QUARTER y YEAR.
SAMEPERIODLASTYEAR vs DATEADD:
SAMEPERIODLASTYEAR(Fechas) es internamente idéntico a escribir DATEADD(Fechas, -1, YEAR). Usa DATEADD cuando necesites comparar contra el mes anterior o el trimestre anterior.
Ejemplo Práctico: Crecimiento Mes a Mes (MoM)
DAX – Medida Comparativa Mes Anterior
Ventas Mes Anterior =
CALCULATE(
[Ingreso Total Bruto],
DATEADD(‘Calendario'[Fecha], -1, MONTH)
)
Contexto: Al analizar las ventas de marzo, esta medida te devolverá lo vendido en febrero. Es el primer paso para poder calcular la tasa de crecimiento mensual:
DIVIDE([Ventas] - [Ventas Mes Anterior], [Ventas Mes Anterior]).
DATESYTD / DATESQTD
Tabla
Modificador
Explicación Técnica
A diferencia de
TOTALYTD (que es una medida completa en sí misma), DATESYTD devuelve una tabla de fechas que va desde el inicio del año hasta la última fecha del contexto actual. Esto la hace la herramienta perfecta para usar dentro de CALCULATE cuando necesitas un acumulado, pero también debes aplicar múltiples filtros adicionales.
TOTALYTD vs DATESYTD:
TOTALYTD([Ventas], Fechas) es en realidad un atajo (syntax sugar) para CALCULATE([Ventas], DATESYTD(Fechas)). Los desarrolladores avanzados prefieren usar DATESYTD porque les da más control sobre el CALCULATE.
Ejemplo Práctico: Acumulado con Condiciones Extra
DAX – Acumulado Avanzado
Ventas YTD Solo Zona Norte =
CALCULATE(
[Ingreso Total Bruto],
DATESYTD(‘Calendario'[Fecha]),
Sucursales[MacroZona] = “Norte”
)
Contexto: Genera el comportamiento de suma acumulada mes a mes, pero forzando a que la operación matemática solo considere las transacciones de las sucursales ubicadas en el Norte de Chile.
PARALLELPERIOD
Tabla
Modificador
Explicación Técnica
Desplaza el contexto de fechas hacia el pasado o el futuro, pero con una trampa muy específica: siempre devuelve el período completo, sin importar lo que el usuario haya seleccionado.
Diferencia Crítica vs DATEADD: Si el usuario selecciona los días “10 al 15 de Octubre de 2024” en el reporte:
•
•
•
DATEADD(-1, MONTH) devolverá exactamente del “10 al 15 de Septiembre de 2024”. Respeta los días seleccionados.•
PARALLELPERIOD(-1, MONTH) devolverá desde el “1 al 30 de Septiembre de 2024” completos. Ignora los días puntuales y trae el bloque temporal entero.
Ejemplo Práctico: Peso de la Venta Diaria
DAX – Denominador Mensual
% de Venta sobre Mes Pasado Completo =
DIVIDE(
[Ingreso Total Bruto],
CALCULATE([Ingreso Total Bruto], PARALLELPERIOD(‘Calendario'[Fecha], -1, MONTH))
)
Contexto: Permite comparar cuánto representa la venta de una semana específica (ej: CyberMonday) respecto al cierre total (100%) del mes inmediatamente anterior.