Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

Filtro Dybamic

Hola en Power BI tengo una tabla con el identificador de columna y otras 6 columnas (1 o valores en blanco) necesito crear un segmentador que tenga las seis columnas dentro, por lo que cuando elijo un número de columnas, necesito ver las líneas en las que al menos una de estas columnas es 1, mientras que todas las demás columnas no seleccionadas deben estar en blanco, y cuando no elijo ninguna columna, debería ver la matriz original con todas las combinaciones posibles, filtrando así solo al elegir algunas columnas del cortador.
Actualmente estoy usando 6 cortadoras para lograr este objetivo, por ejemplo, en las capturas de pantalla adjuntas, he configurado 4 columnas de los 6 coulmns para vaciar, mientras que las otras dos columnas (SEDE y Installdate en el ex) con todas las opciones, por lo que ahora puedo ver todas las líneas de estas dos columnas con las diferentes combinaciones de empty y 1 .

Mi idea era tener un solo cortador con las seis columnas dentro y, por ejemplo, para lograr el resultado adjunto, solo tengo que falgar las dos columnas de este cortador. ¿Alguna sugerencia?


MI MESA FARMSNAP

MIS COLUMNAS (OS_X,DOMINIO_X,INSTALLDATE_X,SEDE_X,LOGICCPU_X,CORE_X)

5 Replies

  • @Hifni93 , puede tener una tabla desconectada con valores 1 y 0. Y luego, en función del valor seleccionado, puede pasar y filtrar varias columnas.

    countrows(filter(Tabla, Tabla[Columna1] en valores(dim[Valores) || Tabla[Columna2] en valores(dim[Valores) ))

    Una opción más son los parámetros de campo en los valores de segmentación

    Power BI: creación de segmentaciones dinámicas mediante parámetros de campo: https://youtu.be/H2ZxWaHAJZQ
    https://medium.com/@amitchandak/power-bi-power-bi-create-dynamic-slicers-using-field-parameters-202587d4dedb

  • Hola, @Hifni93

    En función de su información, creo una tabla de ejemplo:

    Cree una nueva consulta vacía en Power Query y escriba lo siguiente como lista de nombres de columna:

    = {"OS_X","DOMINIO_X","INSTALLDATE_X","SEDE_X","LOGICCPU_X","CORE_X"}


    Convierta esta lista en una tabla, haga clic en A tabla. Puede cambiar el nombre de la columna y el nombre de la tabla:

    Seleccione Cerrar y aplicar. A continuación, cree una nueva medida:

    Filter Logic = 
    VAR Selected = ALLSELECTED('Dimension Table'[Type])
    VAR Logic = 
    IF(
        COUNTROWS(Selected) > 0,
        // At least one of the selected columns is 1, and all unselected columns are empty
        (
            ( MAX('Table'[OS_X]) = 1 && "OS_X" IN Selected ) ||
        ( MAX('Table'[DOMINIO_X]) = 1 && "DOMINIO_X" IN Selected ) ||
        ( MAX('Table'[INSTALLDATE_X]) = 1 && "INSTALLDATE_X" IN Selected) ||
        ( MAX('Table'[LOGICCPU_X]) = 1 && "LOGICCPU_X" IN Selected) ||
        ( MAX('Table'[CORE_X]) = 1 && "CORE_X" IN Selected) ||
        ( MAX('Table'[SEDE_X]) = 1 && "SEDE_X" IN Selected)
        )
         &&
        (
            ( MAX('Table'[OS_X]) = BLANK() || "OS_X" IN Selected ) &&
        ( MAX('Table'[DOMINIO_X]) = BLANK() || "DOMINIO_X" IN Selected ) &&
        ( MAX('Table'[INSTALLDATE_X]) = BLANK() || "INSTALLDATE_X" IN Selected) &&
        ( MAX('Table'[LOGICCPU_X]) = BLANK() || "LOGICCPU_X" IN Selected) &&
        ( MAX('Table'[CORE_X]) = BLANK() || "CORE_X" IN Selected) &&
        ( MAX('Table'[SEDE_X]) = BLANK() || "SEDE_X" IN Selected)
        )
        ,
        TRUE()
    )
    RETURN
    IF(Logic = FALSE(), BLANK(), "True")

    Cree una segmentación de datos que utilice el campo [Tipo] de la tabla de dimensiones recién creada como segmentación, lo que permite varias selecciones. Utilice las medidas anteriores como criterios de filtro para la tabla/matriz. Cuando se selecciona una segmentación, solo se muestran las filas con 1 en la columna seleccionada y las columnas vacías. Todos los datos se muestran cuando no se selecciona ninguna segmentación. Aquí está mi vista previa:

    Cómo obtener respuestas rápidas a su pregunta

    Saludos

    Yongkang Hua

    Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Bueno, su solución funcionó bien para la matriz deseada, pero ahora estoy tratando de construir otra matriz con el mismo filtro, esta vez quiero filtrar la por la suma de una fila, ahora estoy usando las 6 cortadoras para lograr este resultado, ¿puede ayudar con eso? Mire la pantalla para obtener el resultado deseado

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Hola, @Hifni93

        Con respecto al cálculo de sumas, sugiero que pueda considerar duplicar la tabla en Power Query y, a continuación, aplicar dinamización inversa a las columnas


        Cree otra medida para calcular el total

        TypeSum = 
        VAR selected = ALLSELECTED('Dimension Table'[Type])
        RETURN
        CALCULATE(SUM('Table (2)'[Value]), FILTER('Table (2)', 'Table (2)'[Attribute] IN selected))

        Poner la medida en la matriz, aquí está mi vista previa:

        Cómo obtener respuestas rápidas a su pregunta

        Saludos

        Yongkang Hua

        Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.