Inicio / Excel / Excel Avanzado: Power User / DAX: fórmulas avanzadas para análisis

DAX: fórmulas avanzadas para análisis

CALCULATE, Time Intelligence, RANKX y variables en DAX.

Avanzado

DAX: fórmulas avanzadas para análisis

DAX es el lenguaje de Power Pivot y Power BI que permite cálculos analíticos sofisticados.

Contexto de evaluación

Contexto de fila

Se evalúa fila por fila (columnas calculadas):

Margen = Ventas[Precio] - Ventas[Costo]

Contexto de filtro

Se evalúa según los filtros aplicados (medidas en tablas dinámicas):

Total Ventas := SUM(Ventas[Monto])

El valor cambia según los filtros activos (región, período, producto).

CALCULATE en profundidad

CALCULATE modifica el contexto de filtro:

CALCULATE(expresión, filtro1, filtro2, ...)

Operadores de filtro

// Filtro simple
CALCULATE(SUM(Ventas[Monto]), Productos[Categoría] = "Electrónica")

// Múltiples valores
CALCULATE(SUM(Ventas[Monto]), 
    Productos[Categoría] IN {"Electrónica", "Computación"})

// Con tabla de filtro
CALCULATE(SUM(Ventas[Monto]), 
    FILTER(Productos, Productos[Precio] > 1000))

REMOVEFILTERS / ALL

Ignora filtros existentes:

Total General := CALCULATE(SUM(Ventas[Monto]), ALL(Ventas))

% del Total := DIVIDE(
    SUM(Ventas[Monto]),
    CALCULATE(SUM(Ventas[Monto]), ALL(Ventas)),
    0
)

% de la Categoría := DIVIDE(
    SUM(Ventas[Monto]),
    CALCULATE(SUM(Ventas[Monto]), ALLEXCEPT(Ventas, Productos[Categoría])),
    0
)

KEEPFILTERS

Mantiene filtros existentes en lugar de reemplazarlos:

CALCULATE(SUM(Ventas[Monto]), 
    KEEPFILTERS(Productos[Categoría] = "Electrónica"))

Funciones de iteración (funciones X)

Evalúan expresión fila por fila y luego agregan:

// Suma del producto (precio × cantidad) por fila
Ingresos := SUMX(Ventas, Ventas[Precio] * Ventas[Cantidad])

// Promedio del margen por transacción
Margen Promedio := AVERAGEX(Ventas, Ventas[Precio] - Ventas[Costo])

// Máximo ticket
Max Ticket := MAXX(Ventas, Ventas[Precio] * Ventas[Cantidad])

// Contar clientes únicos
Clientes Activos := COUNTAX(
    FILTER(Clientes, Clientes[Estado] = "Activo"),
    Clientes[ID]
)

Time Intelligence avanzado

Comparaciones temporales

// Mismo período año anterior
Ventas Año Anterior := CALCULATE(
    SUM(Ventas[Monto]),
    SAMEPERIODLASTYEAR(Calendario[Fecha])
)

// Crecimiento interanual
YoY % := DIVIDE(
    [Total Ventas] - [Ventas Año Anterior],
    [Ventas Año Anterior],
    0
)

// Acumulado del año
YTD := TOTALYTD(SUM(Ventas[Monto]), Calendario[Fecha])

// Acumulado del trimestre
QTD := TOTALQTD(SUM(Ventas[Monto]), Calendario[Fecha])

// Media móvil 3 meses
Media Móvil 3M := CALCULATE(
    AVERAGEX(VALUES(Calendario[Mes]), [Total Ventas]),
    DATESINPERIOD(Calendario[Fecha], MAX(Calendario[Fecha]), -3, MONTH)
)

Períodos paralelos

// Ventas del mismo mes del año pasado
Ventas_PY := CALCULATE(
    SUM(Ventas[Monto]),
    PARALLELPERIOD(Calendario[Fecha], -12, MONTH)
)

RANKX

Ranking dinámico:

Ranking Vendedor := RANKX(
    ALL(Vendedores[Nombre]),
    [Total Ventas],
    ,
    DESC,
    Dense
)

Variables en DAX

Margen % := 
VAR TotalIngresos = SUM(Ventas[Ingreso])
VAR TotalCostos = SUM(Ventas[Costo])
VAR Margen = TotalIngresos - TotalCostos
RETURN DIVIDE(Margen, TotalIngresos, 0)

SWITCH para categorización

Segmento := SWITCH(TRUE(),
    [Total Ventas] > 100000, "Platinum",
    [Total Ventas] > 50000, "Gold",
    [Total Ventas] > 10000, "Silver",
    "Bronze"
)

Resumen

DAX combina la simplicidad de las funciones de Excel con la potencia del análisis multidimensional. CALCULATE, las funciones X, y Time Intelligence son los pilares fundamentales. Las variables (VAR/RETURN) mejoran la legibilidad y el rendimiento.

📊

Ejercicio interactivo — Hoja de cálculo

Medidas DAX simuladas en Excel

Simula medidas DAX usando funciones de Excel. Crea KPIs típicos de un modelo de datos: Total Ventas, Ventas Año Anterior, Crecimiento % y Acumulado YTD.

A1
ƒ
💡