Power BI11 min lectura

DAX avanzado: Cálculos de tiempo inteligentes

Domina las funciones de Time Intelligence en DAX para comparativas YoY, MTD, YTD y más.

BI Analysts Team

Expertos en Datos e IA

Fundamentos de Time Intelligence en DAX

Las funciones de Time Intelligence en DAX permiten hacer cálculos comparativos a través del tiempo. Son esenciales para cualquier reporte financiero o de ventas.

Requisitos previos

Para que Time Intelligence funcione correctamente necesitas:

  1. Tabla de fechas continua (sin gaps)
  2. Columna de fecha marcada como tabla de fechas
  3. Relación entre tu tabla de hechos y la tabla de fechas

Crear tabla de fechas

Calendario = 
ADDCOLUMNS(
    CALENDAR(DATE(2020,1,1), DATE(2025,12,31)),
    'Año', YEAR([Date]),
    'Mes', MONTH([Date]),
    'NombreMes', FORMAT([Date], 'MMMM'),
    'Trimestre', 'Q' & QUARTER([Date]),
    'AñoMes', FORMAT([Date], 'YYYY-MM')
)

Funciones esenciales

YTD (Year To Date)

Acumulado desde inicio del año hasta la fecha seleccionada:

Ventas YTD = TOTALYTD([Total Ventas], Calendario[Date])

MTD (Month To Date)

Acumulado desde inicio del mes:

Ventas MTD = TOTALMTD([Total Ventas], Calendario[Date])

QTD (Quarter To Date)

Acumulado desde inicio del trimestre:

Ventas QTD = TOTALQTD([Total Ventas], Calendario[Date])

Comparativas vs periodo anterior

Año anterior (SAMEPERIODLASTYEAR)

Ventas Año Anterior = 
CALCULATE(
    [Total Ventas],
    SAMEPERIODLASTYEAR(Calendario[Date])
)

Crecimiento YoY

Crecimiento YoY = 
VAR VentasActuales = [Total Ventas]
VAR VentasAA = [Ventas Año Anterior]
RETURN
DIVIDE(VentasActuales - VentasAA, VentasAA)

Mes anterior (DATEADD)

Ventas Mes Anterior = 
CALCULATE(
    [Total Ventas],
    DATEADD(Calendario[Date], -1, MONTH)
)

Funciones avanzadas

PARALLELPERIOD

Para periodos más flexibles:

Ventas Hace 3 Meses = 
CALCULATE(
    [Total Ventas],
    PARALLELPERIOD(Calendario[Date], -3, MONTH)
)

DATESINPERIOD

Para ventanas móviles:

Ventas Ultimos 90 Dias = 
CALCULATE(
    [Total Ventas],
    DATESINPERIOD(
        Calendario[Date],
        MAX(Calendario[Date]),
        -90,
        DAY
    )
)

Moving Average

Media Movil 3 Meses = 
AVERAGEX(
    DATESINPERIOD(
        Calendario[Date],
        MAX(Calendario[Date]),
        -3,
        MONTH
    ),
    [Total Ventas]
)

Casos de uso prácticos

1. Comparativo completo

Analisis Ventas = 
VAR Actual = [Total Ventas]
VAR AA = [Ventas Año Anterior]
VAR MA = [Ventas Mes Anterior]
VAR YTD_Actual = [Ventas YTD]
VAR YTD_AA = CALCULATE([Ventas YTD], SAMEPERIODLASTYEAR(Calendario[Date]))
RETURN
'Actual: ' & FORMAT(Actual, '$#,##0') & 
' | vs AA: ' & FORMAT(DIVIDE(Actual - AA, AA), '0.0%') &
' | YTD: ' & FORMAT(YTD_Actual, '$#,##0')

2. Running Total

Acumulado = 
CALCULATE(
    [Total Ventas],
    FILTER(
        ALL(Calendario[Date]),
        Calendario[Date] <= MAX(Calendario[Date])
    )
)

Errores comunes

  1. Tabla de fechas incompleta: Causa resultados incorrectos
  2. No marcar como tabla de fechas: Time Intelligence no funciona
  3. Filtros que eliminan contexto: Usa REMOVEFILTERS con cuidado
  4. Mezclar años fiscales y calendario: Define claramente cuál usas

Conclusión

Dominar Time Intelligence es fundamental para cualquier desarrollador de Power BI. Practica estos patrones y pronto serán naturales en tu trabajo diario.

¿Necesitas ayuda con DAX avanzado? Contáctanos para capacitación personalizada.

#DAX#Time Intelligence#Cálculos

¿Te resultó útil este artículo?

Si necesitas ayuda implementando estas soluciones en tu empresa, estamos aquí para ayudarte.

Agenda una consulta gratuita