Variables en DAX: medidas más legibles y más rápidas
Introducidas en DAX en 2015, las variables (VAR/RETURN) son quizá la adición más impactante al lenguaje. Permiten dar nombre a subexpresiones, haciendo el código más legible y potencialmente más rápido.
Sintaxis
Medida =
VAR vVentas = SUM(fVentas[Ingresos])
VAR vCoste = SUM(fVentas[Coste])
VAR vMargen = vVentas - vCoste
RETURN
DIVIDE(vMargen, vVentas)
Beneficios de legibilidad
Compare con la versión sin variables:
-- Sin variables (difícil de leer y mantener)
Margen % = DIVIDE(
SUM(fVentas[Ingresos]) - SUM(fVentas[Coste]),
SUM(fVentas[Ingresos])
)
Con variables, cada parte tiene un nombre semántico. Otros miembros del equipo (o usted dentro de 6 meses) entienden de inmediato la intención.
Beneficios de rendimiento
Una variable se evalúa una sola vez en el contexto de filtro en el que se declara. Si la misma subexpresión aparece tres veces en la medida, sin variables se evalúa tres veces; con variables, se evalúa una vez y el resultado se reutiliza.
Variables para depuración
Debug Medida =
VAR vBase = CALCULATE(SUM(fVentas[Ingresos]), REMOVEFILTERS())
VAR vFiltrado = SUM(fVentas[Ingresos])
RETURN
"Base: " & vBase & " | Filtrado: " & vFiltrado
Cambie el RETURN para revelar valores intermedios durante el desarrollo, sin alterar la lógica final.
Limitación importante
Una variable captura el contexto de filtro en el momento de su declaración. Si el contexto cambia después (p. ej. dentro de un CALCULATE), la variable no se reevalúa. Este comportamiento es intencional y consistente, pero conviene conocerlo.
Conclusión
Use VAR/RETURN en todas las medidas con más de una subexpresión. El coste es cero y las ganancias en legibilidad y mantenimiento son enormes.