Power BITutoriales

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:

3 gráficos casi iguales ocupan espacio y no aportan valor
3 gráficos casi iguales ocupan espacio y no aportan valor

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:

Grafico Dinámico
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“:

Opción Especificar Datos para crear tablas internas en el informe
Opción Especificar Datos para crear tablas internas en el informe

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):

Crear Tabla
Crear Tabla

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

Nueva Tabla con las medidas
Nueva Tabla con las medidas

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:

Filtro para seleccionar la medida a mostrar
Filtro para seleccionar la medida a mostrar

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

Filtro con orientación Horizontal para que parezca una botonera
Filtro con orientación Horizontal para que parezca una 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):

Gráfico con la nueva medida
Gráfico con la nueva medida
Parámetros del gráfico
Parámetros del gráfico

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:

Grafico Dinámico
Gráfico Dinámico

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!

¡SUSCRÍBETE YA!
Doy mi consentimiento para almacenar mis datos para envío de newsletters.
Si te suscribes a la newsletter tendrás acceso a los <b><u>ficheros Power BI originales</u></b> de nuestros tutoriales y post. <br><br>Además tendrás derecho a participar en sorteos periódicos que realizaremos en el blog.
We hate spam. Your email address will not be sold or shared with anyone else.
Mostrar más

Iván Arribas

Llevamos siglos generando, relacionando, modificando y almacenando datos....es hora de que les echemos un vistazo. Espero que este blog sirva de ayuda a los que quieran introducirse en este mundo de la Analítica de Datos, igual que me está sirviendo a mi.

Publicaciones relacionadas

17 comentarios

  1. 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

    1. 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!

    2. 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.

  2. 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

    1. 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!

      1. 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?

        1. 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.

          1. 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!

          2. Gracias por tu apoyo Álvaro!

            Un abrazo y ya sabes donde nos tienes para ayudarte en lo que necesites!

  3. 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.

    1. 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,

  4. 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

    1. 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,

  5. 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.

  6. Pingback: Tutorial Power BI: Periodos o dimensiones dinámicas - Vandalytic - tu blog de Power BI y más en español

Deja una respuesta

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

Información básica sobre protección de datos Ver más

  • Responsable: Iván Arribas Delgado.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Bluehost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Botón volver arriba
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad