Tutorial Power BI: Medida dinámica en una visualización

Seguramente os habréis encontrado con la situación de tener que incluir el mismo gráfico en un informe de Power BI, pero midiendo 2 o 3 variables diferentes.
Por ejemplo, en un informe de ventas es posible que os pidan mostrar la evolución mensual de las ventas en Euros, las ventas en Unidades o el Margen de las ventas. Podríamos hacer 3 gráficos de columnas con los meses en el eje X y en cada uno de ellos representar una medida en el eje Y:

También podríais optar por poner las 3 medidas en un sólo gráfico, pero si dichas medidas tienen rangos diferentes (una en millones, otra en miles y otra en %, por ejemplo) no se verá muy bien.
Ya sabéis que el espacio es un tesoro en un informe de BI y por eso lo vamos a resolver con un sólo gráfico dinámico:

Veamos como realizar este gráfico dinámico de manera sencilla:
PASO 1: Crear una tabla con las opciones de medida a elegir
Lo primero que tendremos que hacer es crear una tabla manual dentro del informe con los 3 valores de las medidas. Para ello, debemos usar la opción “Especificar Datos“:

Al pulsar en este punto de menú, tendremos una especie de Excel donde crear columnas y poner valores (pulsando en el * podréis crear nuevas columnas si es necesario):

De hecho, podéis crear la tabla en Excel y con Ctrl+C y Ctrl+V pegarla sobre esta tabla:

Al aceptar, veréis que tenéis una nueva tabla disponible en el informe con un campo llamado “Medida”.
PASO 2: Crear una medida dinámica
Ahora vamos a crear la medida dinámica que usaremos en el informe. Para ello creamos una nueva medida en la tabla de ventas con la siguiente fórmula DAX:
Medida = IF(
COUNTROWS('Medida Dinamica')=1,
IF(MAX('MedidaDinamica'[Medida])="IMPORTE",
SUM(Ventas[Importe]),
IF(MAX('MedidaDinamica'[Medida])="CANTIDAD",
SUM(Ventas[Cantidad]),
SUM(Ventas[Margen])))
,0)La medida realiza los siguiente pasos:
- Revisa que hayamos filtrado la nueva tabla por una sola medida con la función COUNTROWS()
- Si la medida filtrada es “IMPORTE” suma los importes de la tabla de ventas
- Si la medida filtrada es “CANTIDAD” suma las cantidades e la tabla de ventas
- Si no es ninguna de las anteriores, debe ser “MARGEN” y entonces suma los márgenes de ventas de la tabla de ventas
- En caso de que la nueva tabla de medidas no esté filtrada por un valor, muestra 0.
PASO 4: Crear un filtro con las medidas para poder seleccionar la medida deseada
Debemos crear un gráfico tipo “Segmentación de Datos” (Filtro) con el campo de la tabla Medida que hemos creado en el paso 1:

Os recomiendo que en los parámetros del gráfico seleccionéis la Orientación Horizontal para que el filtro tenga aspecto de botonera:

PASO 5: Crear la visualización con la nueva medida
Este paso es simple: creamos un gráfico de columnas con el mes en el eje X (horizontal) y la nueva Medida en el eje Y (Vertical):


Resultado Final
Al realizar estos 4 sencillos pasos tendréis el siguiente gráfico dinámico mucho más divertido y funcional que los 3 gráficos iniciales:

Conclusiones
Espero que este tutorial os haya sido de utilidad (yo lo uso en muchos de mis proyectos con clientes).
Ya sabéis que si queréis poder descargar el pbix original de este tutorial, sólo tenéis que suscribiros a nuestra newsletter y tendréis acceso a todos los ficheros originales de nuestros posts!







Muy bueno artículo Ivan :)
También podemos escribir la medida dinámica con SELECTEDVALUE, SWITCH TRUE (y con variables para un mejor rendimiento). Yo suelo hacerlo así y espero que puede ser de ayuda :
Medida = VAR Importe = SUM(Ventas[Importe])
VAR Cantidad = SUM(Ventas[Cantidad])
VAR Margen = SUM(Ventas[Margen])
VAR Medida_seleccionada = SELECTEDVALUE (Tabla[Medida])
RESULT SWITCH (TRUE (),
Medida_seleccionada = “Importe” , Importe,
Medida_seleccionada = “Cantidad” , Cantidad,
Medida_seleccionada = “Margen” , Margen,
BLANK())
De esta manera Importe, Cantidad y Margen se calculan solo si están seleccionadas. Un pequeño aporte que podría ser de inspiración para este tipo de escenario. A mi me encanta jugar con eso, es muy dinámico y como tu dices ahorra espacio!
Un saludo
Dhania
Genial aportación Dhania!
La opción con variables es la de mejor rendimiento seguramente y la más limpia!
Tengo pendiente un post sobre el uso de variables en Power BI!
Buenas tardes, el post y la respuestas son muy interesantes y útiles, pero no consigo resolver como realizar una selección dinámica de más de una medida.
Si hay alguna solución lo agradecería,
Muchas gracis.
Xavi.
Hola Xavi,
Actualmente se dispone de una nueva funcionalidad en preview llamada “Parámetros de Campo” que te permitirá crear un selector de medidas. Te dejo un link a la documentación oficial: https://learn.microsoft.com/es-es/power-bi/create-reports/power-bi-field-parameters
Cualquier duda dínoslo!!
Hola, gracias por esta publicación me resolvió un par de problemas.
Me ha surgido otro y os lo comento por si tenéis una solución para él, yo no la logro encontrar
En una tabla y gráfico tengo 3 valores: Cantidad, Venta y Porcentaje. 3 tipos diferentes de unidades, al utilizar esta solución la medida tiene una sola unidad definida, por lo que entiendo que solo podré utilizarlo si los valores son todos monetarios por ejemplo.
En el ejemplo que muestras veo que tienes las mismas unidades para los 3 valores
Un saludo y de nuevo gracias por el aporte
Hola Álvaro,
siento la tardanza en contestar. Efectivamente, como dices, lo ideal es que tengan todos el mismo tipo de dato.
Si te surge cualquier duda adicional, compártela con nosotros!
Gracias por tu respuesta Iván
Perdona por no plantear la pregunta, lo cual aprovecho para hacer en este comentario
¿Existe alguna forma de crear esta medida dinámica con diferentes unidades y que se muestren las diferentes unidades al cambiar de medida?
Hola Álvaro,
entiendo que quieres tener un selector de unidades (por ejemplo: gramos, Kilogramos o Toneladas) y que la medida dinámica vaya variando en función de la unidad de medida seleccionada. No hay ningún problema en hacerlo, es muy similar a lo que planteamos en este tutorial. La única pega es que al ser una medida numérica, mostrar después del número las unidades es difícil (podrías transformar la medida en texto tras el cálculo y añadirle las unidades con un concatenate, pero es algo chapucero).
La mejor opción es que muestres la medida numérica según la unidad seleccionada y que sea el titulo del gráfico el que sea también dinámico: por ejemplo que muestre “Cantidad Vendida (gr)”, “Cantidad Vendida (Kg)” o “Cantidad Vendida (Tn)” en base a la medida seleccionada.
Muchas gracias Iván, has sido de mucha ayuda. La solución del título dinámico es suficiente para mí y la desconocía
Un saludo!
Gracias por tu apoyo Álvaro!
Un abrazo y ya sabes donde nos tienes para ayudarte en lo que necesites!
Hola, excelente aporte, muchas gracias.
Tengo una duda, espero que puedan ayudarme, cuando seleccionamos un valor en una gráfica este se filtra en los otros objetos gráficos que tenemos en la misma hoja, pero ¿es posible que se haga esto seleccionando un dato de una gráfica y que se aplique en todas las hojas? o es forzoso aplicar un slicer.
Hola Paulina,
una de las ventajas de los filtros con slicer vs los filtros en gráficos es que los slicer pueden aplicar a varias páginas. Me temo que un filtro en una página no puede aplicar a otras hojas. O yo no he sabido como hacerlo.
Un saludo,
Hola Ivan, excelente el aporte y tus rspuestas tambien.
Queria preguntarte si el formato del dato tambien puede ser dinamico.
Es decir que si son ventas mueste los valores en la grafica con signo $ y si es el margen lo mueste con el signo %.
Gracias
Hola Ricardo!
Creo que la mejor manera de hacer lo que pides es usar la función DAX Format() en tu medida dinámica.
Aparte de elegir que medida presentar en cada caso, puedes incluir la medida en una función Format() para indicar en que formato debe mostrarse.
Espero que te ayude. Si te funciona puedes comentarlo aqui para el resto de lectores ?
Un saludo,
Hola, muchas gracias por el aporte.
Quisiera hacer algo similar pero no para una medida dinàmica si no para un campo dinámico… quiero poder elegir si veo el dashboard de forma mensual, semanal o diaría.
Hola Brian,
Gracias por la pregunta. Me ha parecido tan interesante, que he añadido un nuevo tutorial para explicar como hacer un informe con un selector de periodo (semanal, mensual o anual). Te dejo el link: https://vandalytic.com/tutorial-power-bi-periodos-o-dimensiones-dinamicas/
Si te quedan dudas sigue en contacto con nosotros para responderlas.
Y de nuevo, ¡gracias por tu aporte!