Grupos de cálculo con Tabular Editor: Ahórrate unos cuantos cálculos DAX

Sara Alonso B
8 min readDec 28, 2022

--

¡Hola! ¿Qué tal? Estoy de nuevo por aquí. Y antes de cerrar el año me gustaría contaros una de las grandes bondades que tiene Tabular Editor y cómo está herramienta nos ayuda a crear unas cuantas medidas en DAX haciendo muy pocos pasos.

Como desarrollador/a de Power BI, ¿cuántas veces te ha pasado que tu cliente te pide una medida, como por ejemplo, el total de las ventas, luego el total de los costes, luego la cantidad de stock, y luego otra…? Y una vez que las tienes te dice: “Ah, pues calcúlame también las ventas del año pasado, y luego compara un periodo con otro, y también el YTD, y el MTD para cada una de esas medidas… y cuando las tengas hazme las del año anterior y compáramelas”. Seguro que te suena bastante familiar. En fin, que cuando te quieres dar cuenta, has creado 647 283 medidas, más o menos.

Pues bien, si no lo conoces ya, te cuento que existe una funcionalidad en Tabular Editor, que es una maravilla, para ahorrarte al menos unas 10 000 de todas esas medidas: la creación de Grupos Calculados. Si no conoces Tabular Editor, es una herramienta externa de Power BI, como DAX Studio o Model Documenter. Así que vamos a ir por orden, y antes de contarte lo que son los grupos calculados te voy a explicar un poquito lo que es Tabular Editor:

Tabular Editor es una herramienta externa de Power BI (se puede instalar en el equipo, y en Power BI aparece con un botón en el menú de “Herramientas Externas”) que permite la creación de modelos tabulares y edita archivos de plantilla de Power BI sin acceder a ningún dato, ya que solo trabaja con la estructura del modelo de datos, y no con el conjunto de datos.

Esta capacidad, que se caracteriza por permitir el trabajo fuera de línea, hace que cualquier cambio se aplique rápidamente al informe de Power BI, especialmente cuando se manipulan y administran medidas, columnas calculadas, carpetas de visualización…

Dado que Tabular Editor solo considera los metadatos del modelo, se pueden cargar modelos enormes con cientos de tablas y miles de medidas, y aplicar cambios al instante.

Interfaz de Tabular Editor:

Observamos que a la izquierda tenemos la estructura del modelo de datos en diferentes carpetas, sin acceder al conjunto de datos. Es por ello, que cualquier cambio que hagamos afectará a los metadatos, por eso se aplican inmediatamente al archivo de Power BI.

Son varias las bondades que tiene Tabular Editor que, en futuros posts, si Dios quiere (como se solía decir), hablaré de ellas. Hoy nos centraremos en los Grupos de Cálculo, que como decía anteriormente, nos servirán para ahorrarnos unas cuantas medidas en Power BI y poder utilizar siempre las mismas de forma dinámica.

Vamos a ir creando un grupo calculado con medidas de inteligencia de tiempo, paso a paso:

  1. Abrimos Tabular Editor desde nuestro informe de Power BI al que queremos añadirle el grupo calculado (previamente Tabular Editor ha sido instalado en el PC).

2. Accedemos a la carpeta de “Tablas” de la estructura del Modelo de datos. Y con el botón derecho del ratón pulsamos sobre “Tablas”, “Crear nuevo” y escogemos “Grupo Calculado”.

Se nos crea abajo una nueva tabla calculada que llamaremos “Medidas de Inteligencia de Tiempo”.

3. Automáticamente se crea dentro de la tabla calculada una carpeta llamada “Elementos de Cálculo”. Si pulsamos con el botón derecho del ratón sobre esta subcarpeta nos aparece la opción de crear “Nuevo elemento de cálculo”. Lo pulsamos.

Lo que vamos a hacer es crear las siguientes medidas de tiempo a modo de ejemplo, pero cambiarán de forma dinámica en función de la medida principal a la que se le apliquen:

CP: Current Period

LY: Last Year

CP vs LY: Comparación del CP con el LY (crecimiento o decrecimiento)

4. Empezamos con la primera, “CP”:

Imaginemos que tenemos en nuestro modelo de datos de Power BI ya calculada una medida que indica el total de las ventas en términos económicos, en el periodo actual que estamos analizando. En DAX sería algo así:

Total Ventas = SUM (Ventas[Ventas totales])

Y tenemos otra medida que nos calcula el total de los costes, en el periodo que estamos analizando:

Total Costes = SUM (Costes[Costes totales])

En Tabular Editor tenemos que crear esa medida de “CP” que de forma dinámica nos indique si se refiere al total de ventas o al total de costes, en función de la medida principal (“Total Ventas” o “Total Costes”) a la que la vayamos a aplicar.

Para ello vamos al “Nuevo Elemento de Cálculo” que hemos creado y pulsando una vez con el ratón lo llamaremos “CP”:

En el espacio en blanco que tenemos en la parte superior derecha comenzamos a escribir la fórmula (importante: sin título, directamente la fórmula). Para ello solo necesitamos “CALCULATE” y una función llamada “SELECTEDMEASURE”, que dependiendo de la medida principal que queramos utilizar nos indicará “Total Ventas” o “Total Costes”:

Una vez que la tenemos pulsamos en el “check” que tenemos en la parte superior del espacio en blanco. Y ya tenemos calculada la medida del periodo actual “CP”.

4. Vamos ahora a crear la medida de “LY”, para indicar, en este caso, el total de ventas o el total de costes del periodo que estamos analizando, pero del año pasado. En Power BI, para el total de ventas, sería algo así:

Ventas LY = CALCULATE ([Total Ventas], SAMEPERIODLASTYEAR (Calendario[Fecha]))

Pues bien, volvemos a utilizar “SELECTEDMEASURE”, tanto en esta fórmula como en todas las demás, es la función que nos va a convertir estas medidas en dinámicas.

Para ello, creamos dentro de la tabla calculada de “Medidas de Inteligencia de Tiempo” un nuevo “Elemento de cálculo”:

Y lo llamaremos “LY”:

Ahora, en el espacio en blanco, empezamos a escribir la fórmula, sin el título. Sustituyendo la medida principal por “SELECTEDMEASURE”:

5. Repetimos el proceso de crear un nuevo elemento de cálculo para el cálculo de CP vs LY:

Para la comparación de un año con otro y ver si las ventas (por ejemplo) han crecido o si se han reducido en %, utilizamos siempre una fórmula como esta, en DAX:

CY vs LY = DIVIDE ( [Total Ventas] — [Ventas LY], [Ventas LY] )

Vamos al espacio en blanco de este nuevo elemento de cálculo y lo que vamos a hacer es sustituir la medida principal por SELECTEDMEASURE, además veremos que necesitaremos también a CALCULATE. Vamos paso a paso desgranando la fórmula:

  • DIVIDE: La indicamos tal cual, pero tendremos que poner “CALCULATE” delante.
  • [Total Ventas]: Es la medida principal que irá variando. Ponemos “SELECTEDMEASURE()” en su lugar.
  • [Ventas LY]: No nos sirve poner “[LY]”, tenemos que indicar de nuevo toda la fórmula que utilizamos para “LY”, es decir:

CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( ‘Calendar’[Date] ) ).

Con esto nos quedaría así:

Ya tendríamos CY vs LY.

Y con esta, ya estarían todas las medidas a modo de ejemplo, por supuesto podrías calcular también otras medidas de inteligencia de tiempo como el YTD, MTD, YTD LY, etc.

Cositas a tener en cuenta:

  • Debemos indicar el orden en el que queremos que aparezcan las medidas de inteligencia de tiempo en nuestra tabla calculada. Para ello, seleccionamos cada una de las medidas que hemos calculado y, debajo del espacio para escribir la fórmula tenemos un desplegable llamado “Basic”, y una de sus filas llamada “Ordinal”, con un número a la derecha. Empezando desde 0, vamos poniendo el orden a las medidas, siendo 0 “CP”, 1 “LY” y 2 “CP vs LY”.
  • Para “CP vs LY” tenemos que indicar que lo queremos en formato de porcentaje. Para ello, vamos al tercer desplegable “Options” y donde pone “Format String Expression” indicamos lo siguiente: “0,0%”. Así ya indicamos que lo queremos en formato de porcentaje y con decimales.
  • Tenemos disponible la opción de usar “DAX formatter (https://www.daxformatter.com/)” para escribir correctamente las fórmulas DAX, lo que nos sirve de gran ayuda. Tenemos el botón justo al lado del “check” y el aspa.

Ahora es el momento de darle al botón de guardar y cerrar Tabular Editor. Inmediatamente se aplican los cambios en Power BI.

En Power BI vemos que se ha añadido la tabla calculada.

Creamos una matriz con el total de ventas por vendedor, y otra con el total de costes por región, donde ponemos como medidas “Total Ventas” y “Total Costes” respectivamente. Además, añadimos un “slicer” de tiempo para escoger un periodo determinado.

Es el momento de añadir la tabla calculada que creamos en Tabular Editor como campo en el apartado de “Columnas”. Automáticamente se añaden cada una de las medidas de inteligencia de tiempo dinámicas y podemos ver tanto las ventas como los costes, respectivamente, para el CP, el LY y la comparación CP vs LY.

No sé que os parece a vosotr@s, pero imaginaos que tenemos que calcular todas estas medidas de tiempo para otras principales como puede ser la cantidad de stock, la cantidad vendida, los beneficios de la empresa, etc… Si no existiera esta funcionalidad de Tabular Editor las tendríamos que ir creando una por una para todas esas medidas principales. De esta forma, con crear las medidas de inteligencia de tiempo, una sola vez, desde Tabular Editor como grupo calculado, solo las tendremos que calcular una vez.

¿Conocías esta funcionalidad? ¿Qué te parece? ¡Déjame tu comentario y hablamos!

Muchas gracias por leerme. ¡Feliz año nuevo!

--

--