Time Intelligence: Análisis Temporal
Las funciones de Time Intelligence de DAX permiten comparar periodos, calcular acumulados y analizar tendencias temporales. Son fundamentales para cualquier dashboard de negocio.
Requisitos previos
Para que Time Intelligence funcione necesitas:
- Una tabla de calendario dedicada con una fila por cada día.
- Marcarla como tabla de fechas en Power BI.
- Una relación entre la tabla de hechos y la tabla de calendario.
Crear tabla de calendario
Calendario =
ADDCOLUMNS(
CALENDARAUTO(),
"Año", YEAR([Date]),
"Trimestre", "Q" & QUARTER([Date]),
"MesNum", MONTH([Date]),
"Mes", FORMAT([Date], "MMMM"),
"MesCorto", FORMAT([Date], "MMM"),
"AñoMes", FORMAT([Date], "YYYY-MM"),
"Semana", WEEKNUM([Date]),
"DiaSemana", FORMAT([Date], "dddd"),
"DiaSemanaNum", WEEKDAY([Date], 2)
)
Comparaciones Year-over-Year (YoY)
Ventas del mismo periodo del año anterior
Ventas Año Anterior =
CALCULATE(
[Ingresos],
SAMEPERIODLASTYEAR(Calendario[Date])
)
Crecimiento YoY
Crecimiento YoY =
VAR VentasActual = [Ingresos]
VAR VentasAnterior = [Ventas Año Anterior]
RETURN
DIVIDE(VentasActual - VentasAnterior, VentasAnterior, 0)
Variación absoluta
Variación YoY = [Ingresos] - [Ventas Año Anterior]
Acumulados (Year-to-Date, Month-to-Date)
Year-to-Date (YTD)
Ventas YTD =
CALCULATE(
[Ingresos],
DATESYTD(Calendario[Date])
)
Month-to-Date (MTD)
Ventas MTD =
CALCULATE(
[Ingresos],
DATESMTD(Calendario[Date])
)
Quarter-to-Date (QTD)
Ventas QTD =
CALCULATE(
[Ingresos],
DATESQTD(Calendario[Date])
)
Comparación de periodos
Mes anterior
Ventas Mes Anterior =
CALCULATE(
[Ingresos],
PREVIOUSMONTH(Calendario[Date])
)
Crecimiento MoM =
DIVIDE(
[Ingresos] - [Ventas Mes Anterior],
[Ventas Mes Anterior],
0
)
Trimestre anterior
Ventas Trimestre Anterior =
CALCULATE(
[Ingresos],
PREVIOUSQUARTER(Calendario[Date])
)
Media móvil
Media Móvil 3 Meses =
AVERAGEX(
DATESINPERIOD(Calendario[Date], MAX(Calendario[Date]), -3, MONTH),
[Ingresos]
)
DATEADD: desplazamiento flexible
// 7 días atrás
Ventas Hace 7 Días =
CALCULATE([Ingresos], DATEADD(Calendario[Date], -7, DAY))
// 1 año atrás
Ventas Hace 1 Año =
CALCULATE([Ingresos], DATEADD(Calendario[Date], -1, YEAR))
// 1 mes atrás
Ventas Hace 1 Mes =
CALCULATE([Ingresos], DATEADD(Calendario[Date], -1, MONTH))
Tabla resumen de funciones Time Intelligence
| Función | Descripción |
|---|---|
SAMEPERIODLASTYEAR |
Mismo periodo del año anterior |
PREVIOUSMONTH |
El mes anterior completo |
PREVIOUSQUARTER |
El trimestre anterior |
PREVIOUSYEAR |
El año anterior |
DATESYTD |
Desde inicio de año hasta la fecha |
DATESMTD |
Desde inicio de mes hasta la fecha |
DATESQTD |
Desde inicio de trimestre hasta la fecha |
DATEADD |
Desplaza un periodo de fechas |
DATESINPERIOD |
Rango desde una fecha base |
TOTALYTD |
Shortcut para CALCULATE + DATESYTD |
PARALLELPERIOD |
Periodo paralelo desplazado |
DATESBETWEEN |
Rango entre dos fechas |
Ejemplo completo: dashboard de ventas temporal
// Métricas actuales
Ingresos = SUM(Ventas[Monto])
// Comparaciones
Ingresos YA = CALCULATE([Ingresos], SAMEPERIODLASTYEAR(Calendario[Date]))
Ingresos MA = CALCULATE([Ingresos], PREVIOUSMONTH(Calendario[Date]))
// Crecimiento
Crecimiento YoY % = DIVIDE([Ingresos] - [Ingresos YA], [Ingresos YA], 0)
Crecimiento MoM % = DIVIDE([Ingresos] - [Ingresos MA], [Ingresos MA], 0)
// Acumulados
Ingresos YTD = CALCULATE([Ingresos], DATESYTD(Calendario[Date]))
Ingresos YTD YA = CALCULATE([Ingresos YA], DATESYTD(Calendario[Date]))
// Tendencia
Media Móvil 3M = AVERAGEX(
DATESINPERIOD(Calendario[Date], MAX(Calendario[Date]), -3, MONTH),
[Ingresos]
)
Resumen
Time Intelligence transforma tus reportes de simples listados a análisis comparativos poderosos. Year-over-Year, acumulados YTD y medias móviles son las métricas más usadas. Siempre necesitas una tabla de calendario dedicada para que estas funciones operen correctamente.