Funciones
1. CALCULATE
Qué hace
CALCULATE cambia el contexto de filtro de un cálculo. Es la función más poderosa de DAX y sirve para:
- aplicar filtros específicos
- realizar cálculos condicionados
- comparar métricas bajo distintos criterios
Sintaxis
CALCULATE(<expression>, <filter1>, <filter2>, …)
Ejemplo
Ventas solo para Francia:
Ventas Francia =
CALCULATE(
SUM(Financials[Sales]),
Financials[Country] = «France»
)
Explicación: suma las ventas filtradas por Country = Francia.
2. FILTER
Qué hace
FILTER permite filtrar una tabla antes de aplicar un cálculo.
Sintaxis
FILTER(<tabla>, <condición>)
Ejemplo
Ventas mayores a 1000 €:
Ventas Grandes =
CALCULATE(
SUM(Financials[Sales]),
FILTER(
Financials,
Financials[Sales] > 1000
)
)
Explicación: primero filtra filas donde Sales > 1000, luego suma.
3. ALL
Qué hace
ALL elimina filtros de una columna o tabla, útil para calcular totales o participaciones.
Ejemplo
Porcentaje de participación de cada producto:
% Participación Producto =
DIVIDE(
[Ventas Totales],
CALCULATE(
[Ventas Totales],
ALL(Financials[Product])
)
)
Explicación: ALL(Financials[Product]) ignora el filtro de producto, permitiendo calcular el total general.
4. RELATED
Qué hace
RELATED permite traer columnas relacionadas desde otra tabla.
Ejemplo
Si tenemos:
- Ventas → id_Producto
- Productos → id_Producto y Categoria
Podemos calcular categoría de la venta:
Categoria = RELATED(Productos[Categoria])
5. DIVIDE
Qué hace
DIVIDE realiza divisiones seguras, evitando errores por cero.
Ejemplo
Margen de beneficio:
Margen % =
DIVIDE(
SUM(Financials[Profit]),
SUM(Financials[Sales])
)
6. Variables en DAX
Qué hacen
VAR permite guardar valores intermedios para cálculos complejos, mejorando legibilidad y rendimiento.
Ejemplo
Crecimiento YoY usando variables:
Crecimiento YoY =
VAR VentasActual = SUM(Financials[Sales])
VAR VentasAñoAnterior =
CALCULATE(
SUM(Financials[Sales]),
SAMEPERIODLASTYEAR(Calendario[Date])
)
RETURN
DIVIDE(VentasActual – VentasAñoAnterior, VentasAñoAnterior)
Explicación:
- VentasActual guarda el total del año en curso
- VentasAñoAnterior guarda total año previo
- RETURN calcula el crecimiento
7. Inteligencia temporal
TOTALYTD
Ventas acumuladas del año:
Ventas YTD =
TOTALYTD(
SUM(Financials[Sales]),
Calendario[Date]
)
SAMEPERIODLASTYEAR
Ventas del año anterior (YoY):
Ventas Año Anterior =
CALCULATE(
SUM(Financials[Sales]),
SAMEPERIODLASTYEAR(Calendario[Date])
)
DATEADD
Comparación de periodos desplazados:
Ventas 1 Mes Anterior =
CALCULATE(
SUM(Financials[Sales]),
DATEADD(Calendario[Date], -1, MONTH)
)
Explicación: desplaza fechas un mes hacia atrás y calcula ventas.
8. KPIs
Los KPIs permiten resumir indicadores críticos en dashboards:
- Ventas Totales
- Margen %
- Crecimiento YoY
- Participación de producto
Se pueden crear con medidas DAX y mostrar en:
- Tarjetas
- KPI visual
- Gráfico combinado (línea + barras)
9. Buenas prácticas en DAX
- Usar medidas en lugar de columnas calculadas siempre que sea posible
- Usar DIVIDE para evitar errores por división cero
- Nombrar medidas de forma clara
- Usar variables (VAR) para cálculos complejos
- Aprovechar ALL y CALCULATE para métricas comparativas
- Usar tabla calendario para inteligencia temporal
Evitar duplicar lógica DAX: crear medidas reutilizables