Dashboard de Business Intelligence
BI

TOP 10 funciones DAX que todo analista BI debe dominar

Por Antonio Moro28 Feb 20256 min lectura

Después de revisar más de 200 modelos Power BI en proyectos enterprise, siempre encuentro los mismos patrones: quienes dominan estas 10 funciones DAX construyen modelos que funcionan en producción. Quienes no, generan medidas lentas, resultados incorrectos o paneles que nadie entiende. Aquí están, con ejemplos reales.

1. CALCULATE — el corazón de DAX

CALCULATE es, con diferencia, la función más importante de DAX. Evalúa una expresión modificando el contexto de filtro. Sin ella, no puedes hacer casi ninguna medida avanzada.

-- Ventas solo de la categoria "Electronica"
Ventas Electronica =
CALCULATE(
    SUM(Ventas[Importe]),
    Productos[Categoria] = "Electronica"
)

-- Ventas acumuladas del anyo (YTD)
Ventas YTD =
CALCULATE(
    SUM(Ventas[Importe]),
    DATESYTD(Calendario[Fecha])
)

Cuándo usarla: siempre que necesites modificar el contexto de filtro de una expresión. Es la base de casi todas las medidas de inteligencia temporal, comparativas y ratios.

2. FILTER — filtrado dinámico de tablas

FILTER devuelve una tabla filtrada. Se usa habitualmente como argumento dentro de CALCULATE cuando el filtro es más complejo que una simple igualdad.

-- Clientes con mas de 10 pedidos
Clientes Alto Volumen =
CALCULATE(
    COUNTROWS(Pedidos),
    FILTER(
        Clientes,
        [Total Pedidos Cliente] > 10
    )
)

-- Productos con precio superior a la media
Ventas Premium =
CALCULATE(
    SUM(Ventas[Importe]),
    FILTER(Productos, Productos[Precio] > AVERAGE(Productos[Precio]))
)

3. ALL / ALLEXCEPT — eliminar filtros

ALL elimina todos los filtros de una tabla o columna. ALLEXCEPT elimina todos los filtros excepto los de las columnas especificadas. Son esenciales para calcular porcentajes sobre el total.

-- % sobre total general
% del Total =
DIVIDE(
    SUM(Ventas[Importe]),
    CALCULATE(SUM(Ventas[Importe]), ALL(Ventas))
)

-- % sobre total de la categoria (respetando filtro de fecha)
% Categoria =
DIVIDE(
    SUM(Ventas[Importe]),
    CALCULATE(
        SUM(Ventas[Importe]),
        ALLEXCEPT(Productos, Productos[Categoria])
    )
)

4. SUMX / AVERAGEX — iteradores fila a fila

Las funciones X iteran sobre cada fila de una tabla y evalúan una expresión. Son imprescindibles cuando necesitas calcular algo por fila antes de agregar.

-- Margen total: precio * (1 - descuento) * cantidad
Margen Total =
SUMX(
    Ventas,
    Ventas[Cantidad] * (Ventas[PrecioUnitario] - Ventas[Coste])
)

-- Precio medio ponderado por volumen
Precio Medio Ponderado =
DIVIDE(
    SUMX(Ventas, Ventas[Cantidad] * Ventas[PrecioUnitario]),
    SUM(Ventas[Cantidad])
)

5. RANKX — ranking dinámico

RANKX asigna un rango a cada elemento de una tabla según una expresión. Ideal para TOP N dinámicos en tablas y visualizaciones.

-- Ranking de productos por ventas
Ranking Producto =
RANKX(
    ALL(Productos[Nombre]),
    [Ventas Totales],
    ,
    DESC,
    DENSE
)
Tip

Usa DENSE para evitar saltos en el ranking (1,2,2,3 en lugar de 1,2,2,4). Especialmente importante en dashboards de ejecutivos donde los saltos generan confusión.

6. DIVIDE — división segura

DIVIDE maneja automáticamente la división por cero devolviendo un valor alternativo (por defecto BLANK). Nunca uses el operador / directamente en medidas de ratio.

-- NUNCA hagas esto:
Margen % MALO = [Beneficio] / [Ventas]   -- error si Ventas = 0

-- Siempre usa DIVIDE:
Margen % =
DIVIDE(
    [Beneficio],
    [Ventas],
    0   -- valor alternativo si denominador = 0
)

-- Tasa de conversion
Tasa Conversion =
DIVIDE([Pedidos Completados], [Visitas], BLANK())

7. DATEADD / SAMEPERIODLASTYEAR — inteligencia temporal

Estas funciones son la base de cualquier comparativa temporal. SAMEPERIODLASTYEAR es un atajo de DATEADD con -1 año.

-- Ventas mismo periodo anyo anterior
Ventas AA =
CALCULATE(
    SUM(Ventas[Importe]),
    SAMEPERIODLASTYEAR(Calendario[Fecha])
)

-- Variacion YoY en %
YoY % =
DIVIDE([Ventas Totales] - [Ventas AA], [Ventas AA])

-- Ventas hace 3 meses
Ventas 3M Antes =
CALCULATE(
    SUM(Ventas[Importe]),
    DATEADD(Calendario[Fecha], -3, MONTH)
)

8. RELATED — navegar relaciones

RELATED trae un valor de una tabla relacionada (del lado “uno” de una relación 1-N). Se usa en columnas calculadas, no en medidas.

-- En tabla Ventas, traer la categoria del producto
Categoria Venta = RELATED(Productos[Categoria])

-- Margen por linea usando coste de la tabla Productos
Margen Linea =
Ventas[Importe] - (Ventas[Cantidad] * RELATED(Productos[CosteUnitario]))

9. SWITCH — lógica condicional limpia

SWITCH reemplaza cadenas de IF anidados con una sintaxis mucho más legible. Especialmente útil para segmentaciones y etiquetas.

-- Segmentacion de clientes por volumen
Segmento Cliente =
SWITCH(
    TRUE(),
    [Ventas Cliente] >= 100000, "Platinum",
    [Ventas Cliente] >= 50000,  "Gold",
    [Ventas Cliente] >= 10000,  "Silver",
    "Standard"
)

-- Etiqueta de semaforo
Estado KPI =
SWITCH(
    TRUE(),
    [Margen %] >= 0.20, "Verde",
    [Margen %] >= 0.10, "Amarillo",
    "Rojo"
)

10. VAR — variables para medidas limpias y eficientes

VAR permite declarar variables dentro de una medida, mejorando la legibilidad y el rendimiento (la expresión se evalúa una sola vez). Es una buena práctica usar VAR en cualquier medida moderadamente compleja.

-- Con VAR: limpio, eficiente y facil de depurar
Margen % Limpio =
VAR TotalVentas = SUM(Ventas[Importe])
VAR TotalCoste  = SUM(Ventas[Coste])
VAR Beneficio   = TotalVentas - TotalCoste
RETURN
DIVIDE(Beneficio, TotalVentas, 0)

-- VAR para evitar recalculos en medidas temporales
Crecimiento YoY =
VAR VentasActual = SUM(Ventas[Importe])
VAR VentasAA =
    CALCULATE(
        SUM(Ventas[Importe]),
        SAMEPERIODLASTYEAR(Calendario[Fecha])
    )
RETURN
DIVIDE(VentasActual - VentasAA, VentasAA, BLANK())
Regla de oro

Si una medida tiene más de 3 líneas, usa VAR. Si tiene más de 5, es obligatorio. El depurador de DAX Studio te lo agradece.


Dashboard Kit con más de 50 medidas DAX listas para usar

Plantillas Power BI con medidas DAX de producción para ventas, finanzas, RRHH y logística. Documentadas, optimizadas y listas para adaptar a tu modelo de datos.

Ver recursos →