Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Matriz de Power BI

Tengo un requerimiento del equipo de Finanzas al primer final del trimestre del año, tienen el Pronóstico 1 y, el segundo trimestre se agrega el Pronóstico 2 y al final del tercer trimestre, se agrega el Pronóstico 3. Condicionalmente, estas columnas son visibles en función de las columnas que tienen valores que, de otro modo, deberían ocultarse. ¿Cómo puedo lograr este tipo de diseño matricial?

Dado que actualmente solo la columna Forecast1 tiene valores para 2024, solo Forecast1 debe estar visible, las columnas Forecast2 y Forecast3 deben ser invisibles. En el próximo mes de julio, se agregarán los valores de Forecast2, por lo que se mostrarán los valores de Forecast1 y Forecast2 y se ocultará Forecast3. Por otro lado, en 2023, todas las columnas de Pronóstico 1, 2 y 3 tienen valores, por lo que las tres columnas deben estar visibles. ¿Puedo lograr esto mostrando columnas condicionalmente en función de si las columnas tienen datos o no?

2 Replies

  • Hola @anusha_2023, es una muy buena pregunta, ¡gracias por ella!

    Para mostrar una medida en cualquier objeto visual, debe arrastrar y soltar un elemento deseado en un lienzo. De forma predeterminada, PowerBI siempre mostrará esta medida (en su caso como una columna de matriz). Lo único que puedes controlar es el valor de la medida, pero el hecho de tener visible esa columna con el nombre de la medida es indudable.

    Entonces, ¿qué podemos hacer? Necesitamos usar un elemento que nos permita cambiar el número de campos dipalyed. El único que me viene a la mente es "Parámetro de campo" (puedes aprender más sobre él aquí). Al colocar Pronóstico 1, 2 y 3 en el parámetro de campo, podemos mostrar más/menos columnas mediante el uso de un filtro.

    Entonces, lo último que tenemos que hacer es aplicar automáticamente el filtro a los valores necesarios y aquí donde está el beaty.

    Recuerde que el "parámetro archivado" es una tabla a la que puede acceder y, en consecuencia, agregarle 😉 columnas adicionales
    Lo que se puede hacer es agregar una columna "InScope" con un resultado verdadero/falso que definirá si se debe considerar o no una fila específica de la tabla de parámetros de campo. En mi caso, decidí aplicar la lógica basada en el hecho de si la medida tiene algún valor o no (puede rediseñarla para mostrar filas adicionales solo después de una fecha específica, etc.)

    InScope = 
    VAR _CurrentKPI = Parameter[Parameter]
    RETURN 
        SWITCH(
            _CurrentKPI,
            "Forecast 1", NOT ISBLANK( [Forecast 1] ),
            "Forecast 2", NOT ISBLANK( [Forecast 2] ),
            "Forecast 3", NOT ISBLANK( [Forecast 3] ),
            FALSE()
        )


    El último paso es aplicar este filtro con el filtro "verdadero" aplicado en un objeto visual:


    La próxima vez que rebusque el modelo semántico, "InScope" se actualizará de acuerdo para que más filas puedan tener una condición verdadera (dependiendo de la lógica de "InScope").

    Algunas consideraciones:

    • Asegúrese de bloquear este filtro, no desea que los usuarios cambien su valor
    • He usado medidas en la columna calucalted, es posible que desee usar un valor estático para asegurarse de que su comportamiento no cambie según el contexto del filtro


    Puede encontrar un archivo de muestra adjunto. Intente cambiar el valor de Forecast 2 a un número estático para ver esta lógica en acción.

    ¡Buena suerte con tu proyecto!

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Muchas gracias por la solución rápida y muy detallada. Cumple exactamente el propósito. Aún así, me enfrento a un problema con la columna calculada "Inscope" que se ha agregado a la tabla de parámetros. Mis medidas respondían a medidas en lugar de a la columna calculada Inscope. Intenté hacer una "Medida de Inscope" pero no pude tener éxito. ¿Podría comprobar el problema? Subí el archivo Pbix que se modificó usando solo su archivo.

      https://drive.google.com/file/d/1JDAIo3R1W-45I4oK4HgOvjXAbws3A5kC/view?usp=sharing