El lenguaje DAX

Ya se ha comentado en más de una ocasión que el objetivo principal de una Solución de Inteligencia de Negocio es dar respuesta a preguntas de negocio que faciliten al usuario la toma de decisiones. Y esto se consigue básicamente aplicando funciones de agregación a nuestros campos, como “suma la columna de importes de venta para obtener el total de ventas”, o “suma la columna de importes de venta desagrupándola según el estado civil de nuestros clientes”. Es decir, obteniendo métricas a partir de nuestros datos.

Así, cuando creamos una tarjeta a la que hemos llevado el campo Amount de nuestra tabla de ventas (dejando la función de agregación por defecto: la suma):

El lenguaje DAX

lo que está haciendo “la máquina DAX” (encargada de todos estos cálculos) es aplicar una función de agregación (la suma) a una columna de una tabla de nuestro modelo de datos, la columna Amount. Es decir, calcula algo como

SUM(Sales[Amount])     [1]

que podríamos leer como “suma la columna Amount de la tabla Sales”.

Y cuando creamos una gráfica de barras en la que desagregamos la suma de las ventas (campo Amount incluido en la tabla Sales) por estado civil del cliente (campo Marital Status incluido en la tabla Customers):

(dejando la función de agregación por defecto: la suma)

lo que hace la máquina DAX es evaluar la relación entre las tablas Customers y Sales:

El lenguaje DAX

confirma que la tabla de Customers puede filtrar la tabla Sales, identifica los valores posibles del campo Marital Status (cinco: Married, Divorced, Widowed, Other y Single) y aplica la expresión [1] (que suma el campo Amount) cinco veces y, en cada una, selecciona un único valor del campo Marital Status en la tabla Customers (filtrándola), deja que ese filtro se propague a la tabla Sales de modo que solo las ventas asociadas a dicho estado civil queden seleccionadas, y aplica la expresión [1] a dichas filas, creándose una barra con una longitud proporcional a la cifra obtenida.

Es decir, para cada número presente en nuestro informe (o para cada marca gráfica representando un número que haya en nuestro informe -columnas, barras, sectores de círculo, etc.-) la máquina DAX va a realizar un cálculo considerando los filtros que se estén aplicando a nuestro modelo de datos. Y todo esto ocurre en una fracción de segundo cada vez que interactuamos con el informe.