DAX: Medidas vs Variables

Este escrito forma parte de la serie: Escenarios de Modelado con DAX

Algunos de los recursos que he consultado sobre Modelado tabular y DAX los podemos encontrar en Modelos tabulares y DAX – Recursos

Hoy quiero comentar sobre la posibilidad de crear variables para trabajar con expresiones DAX. Es una gran funcionalidad, da legibilidad al código, según el escenario es posible obtener mejor rendimiento al evaluar la expresión, permite evitar medidas innecesarias… todas son ventajas, veamos.

Variables en DAX

Es posible, a partir de la versión DAX 2015, crear variables y emplearlas en el código de una expresión DAX.

Hay que decir que a pesar de su nombre, las variables creadas en expresiones DAX actúan como constantes, ¡¡¿cómo?!! Pues sí, veamos un ejemplo.

Partimos de las mismas medidas que creamos en el caso anterior, donde, de paso sea dicho, solucionamos los problemas que planteaba el trabajo con columnas calculadas.

Total Importe = SUMX(Ventas;Ventas[CantidadETL]*Ventas[Precio])
Total Beneficios = SUMX(Ventas;Ventas[CantidadETL] * (Ventas[Precio] – Ventas[Coste]))
Total % Beneficios = DIVIDE([Total Beneficios];[Total Importe])

Digamos, que en nuestro modelo, lo único que necesitamos plasmar en el informe es Total % de Beneficio, que no utilizaremos las medidas Total Importe ni Total Beneficio.

Veamos las opciones de las que disponemos:

  • Escribir toda la lógica del cálculo en una única expresión DAX.
    • No es una mala idea, aunque según sea el caso, puede llegar a ser compleja la lectura y depuración.
    • Para ello creamos una nueva medida DAX, cuya expresión es:

Total % Beneficio v2 =
DIVIDE(
SUMX(Ventas;Ventas[CantidadETL] * (Ventas[Precio] – Ventas[Coste]));
SUMX(Ventas;Ventas[CantidadETL]*Ventas[Precio])
)

PorBene2

  • Mantener las dos medidas que creamos antes y ocultarlas ya que no van a ser utilizadas en los informes.
    • Solo nos sirven para solucionar el requisito por etapas.
    • En este caso Total Beneficio es el numerador mientras que Total Ventas es el denominador.
    • Para ocultar una medida, o cualquier objeto del modelo tabular que no queremos que sea visible para la herramienta destino, una opción es desde el panel de Campos, en el Power BI Desktop, seleccionar la medida y con el menú contextual, seleccionar Ocultar. Todos los elementos ocultos se encuentran disponibles para cálculoa previos y/o futuros.

OcultarTotImp

  • Trabajar con variables, que es nuestro objetivo hoy 🙂

Trabajar con variables en Modelos tabulares

Un breve resumen:

  • Las variables se pueden utilizar dentro de las expresiones DAX
  • Es posible crear y consumir más de una variable en una expresión de cálculo en DAX
  • Como requisitos de sintaxis, van precedidas de la palabra VAR y para ser evaluadas se precisa de la palabra RETURN
  • En el momento en que sean invocadas, se evalúan una única vez y se tratan como constantes
  • Una de las ventajas es que permite ver toda la lógica de negocio de una expresión compleja, que ha sido dividida en partes
  • Permite crear expresiones más legibles
  • Según sea el escenario, posibilitan un mejor rendimiento del modelo

Vamos a utilizar la misma lógica de negocio, expresada antes en medidas, ahora con variables

  • Lo primero, es definir las expresiones para las variables

DefineVar

  • Luego, definir la expresión que evalúa o consume las variables.

Intellisense, acude, una vez más a nuestra ayuda, mostrando las variables disponibles

UsaImporte

  • Hasta que obtenemos toda la expresión DAX que necesitamos

UsaVARs

  • Esta es la expresión DAX resultante.

Total % Beneficio v3 =
VAR Importes = SUMX(Ventas;Ventas[CantidadETL]*Ventas[Precio])
VAR Beneficios = SUMX(Ventas;Ventas[CantidadETL] * (Ventas[Precio] – Ventas[Coste]))
RETURN
DIVIDE(Importes;Beneficios)

Hemos creado una medida, para obtener Total % Beneficio a partir de la evaluación de dos variables: Importes y Beneficios, que a su vez, se han creado y definido dentro de la propia medida, ambos valores, al ser utilizados para el cálculo final, se tratan como constantes.

Este es el resultado de utilizar las tres opciones en un informe

TablaUsoVar

En esta serie veremos otros ejemplos de las ventajas de trabajar, siempre que sea posible, con Variables, en lugar de con Medidas intermedias que han de ser ocultadas de la vista informes.

Si trabajamos con Power BI Desktop, y utilizamos la funcionalidad Medidas rápidas, veremos que la herramienta hace un uso elevado y eficiente del trabajo con variables para crear complejas expresiones DAX

Espero que resulte de utilidad #HappyDAXing !!! 🙂

En la próxima entrada vamos a ver cómo trabajar con las relaciones y los cálculos DAX en Modelos tabulares con Power BI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.