Verano. ¿Qué leo? ¿Qué escucho? ¿Qué veo?
28 julio, 2021
Así está el mundo digital y de la tecnología en datos
10 septiembre, 2021

A todos nos ha pasado en muchas ocasiones, que una vez que hemos analizado nuestra información en Power BI para el periodo actual, nos empieza a surgir la necesidad de realizar nuevos análisis temporales (analizar el mismo periodo del año anterior, realizar acumulados anuales, trimestrales, variaciones … y un largo etcétera).


Imaginemos que se ha desarrollado un modelo con 20 métricas base, como las ventas, el número de unidades vendidas, el número de productos … y así hasta 20. Días después nos llega un nuevo requerimiento de nuestro cliente para incluir para cada una de estas 20 métricas, los cálculos del año anterior, acumulado del año actual y acumulado trimestral. Con una simple multiplicación (20×3) nos damos cuenta de tenemos ¡60 nuevas métricas en nuestro modelo de Power BI!


¿Es posible disponer de estos cálculos sin crear 60 nuevas métricas en nuestro pbix y evitando dentro de lo posible esta tarea repetitiva? ¡¡La respuesta es sí, y podemos pasar de 60 a solamente 3 nuevas medidas!! Combinando la magia de la función DAX SELECTEDMEASURE() junto con los grupos calculados de Power BI.


Con esta solución ahorramos mucho tiempo de desarrollo en nuestro informe, lo que nos hace ser más productivos en nuestro día a día. A continuación, se muestra un ejemplo paso a paso de como implementar esta solución:

  • Partimos de nuestro modelo en estrella, con nuestras tablas de hechos y dimensiones. Tenemos dos medidas para minimizar el ejemplo, pero podría ser idéntico para 20. Como requisito para siguientes pasos se debe de tener instalada la herramienta de Tabular Editor. Dejo un enlace de un compañero, en el cual se explican las herramientas externas en Power BI Herramientas externas en Power BI – Kabel.
  • Nos dirigimos a herramientas externas y clicamos sobre Tabular Editor.
  • Una vez inicie la aplicación Tabular Editor, creamos un nuevo grupo calculado.
  • Renombramos el grupo calculado con el nombre que queramos.
  • Una vez renombrado el grupo calculado, se crea un nuevo cálculo dentro del grupo calculado.
  • Creamos la medida, la cuál nos calcula el año anterior (SAMEPERIODLASTYEAR). Como se puede observar en el código, no se hace referencia a una medida concreta sino a SELECTEDMEASURE() la cuál hace referencia a la medida que está en contexto. No hay que pasarle ningún parámetro a esta función.

Para conocer más detalle sobre SELECTEDMEASURE(): https://docs.microsoft.com/es-es/dax/selectedmeasure-function-dax

  • Repetimos la acción para calcular el acumulado anual, acumulado trimestral y valor de la medida seleccionada dependiendo del contexto.
  • Guardamos los cálculos en tabular editor.
  • Acto seguido, nos dirigimos a nuestro pbix donde nos aparecería un aviso para refrescar los metadatos de nuestro modelo. Pulsamos “Refresh Now” y tendríamos todas nuestras medidas disponibles en nuestro libro de trabajo para ser usadas.
  • Para finalizar, se muestra un ejemplo básico de cómo usar este grupo calculado que acabamos de crear. Una vez actualizado nuestro libro de trabajo (paso 9), podemos observar que a la derecha nos aparece el grupo que hemos creado con una columna a usar llamada “Name”. Esta columna, si hacemos un filtro con ella, contiene 4 elementos correspondientes a los 4 cálculos que acabamos de crear en pasos anteriores.
  • Si dispongo en mi pbix una tabla simple con el valor de las medidas y dos gráficos estándar, simplemente cambiando el valor del filtro “Name”, cambia el valor mostrado en los objetos visuales de mi pbix.
  • Valor del contexto actual de las medidas (Año 2019)
  • Valor de las medidas para el año anterior (2018) del contexto actual (Filtro Año 2019).
  • Valor acumulado anual.
  • Valor acumulado trimestral.

Además de este ejemplo existen muchas posibilidades de aumentar nuestra productividad durante el desarrollo. La herramienta tabular editor nos permite un sinfín de posibilidades entre las que destaco las siguientes:

  • Automatización del formateo de medidas de nuestro modelo,
  • Creación de medidas automáticamente mediante un cursor que recorra los objetos de nuestro modelo.

Estos puntos se consiguen a través la implementación de acciones mediante scripts.

Seguro que os será muy útil esta solución en vuestro día a día, además de no sobrecargar el modelo con muchas medidas y realizar un mantenimiento más sencillo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

NEWSLETTER