Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
9 months ago

TRATADO

Hola tiburones,

tengo dos columnas dentro de una tabla (HIER[LEVEL_3_DESC], HIER[LEVEL_5_DESC]), ambas tienen los mismos valores como puntos de datos, que es el nombre del fabricante pero con filtros diferentes de H1 y H3, daban valores distintos,

Tengo HIER[LEVEL_5_DESC] en mi visual y filtro H1, pero cuando filtro H3 quiero que HIER[LEVEL_5_DESC] actúe como HIER[LEVEL_3_DESC] y devuelva esos valores.

VAR _sum_of_col_H1_MANUFACTURER =
CALCULATE(
[Promedio de HANDNP],

FILTROS DE REMOVER(HIER)
HIER[AC_HIERARCHY_CODE] = "H3",
HIER[HLEVEL] = "FABRICANTE",

-- La PARTE CLAVE:
-- Toma LEVEL_5_DESC seleccionada en el visual
-- Aplicalos a LEVEL_3_DESC
TREATAS(
VALORES(HIER[LEVEL_5_DESC]),
HIER[LEVEL_3_DESC]
)



5 Replies

  • Hola @Maximous89 ,

    Puedes usar treatas para conseguir el rendimiento que necesitas.

    Como LEVEL_5_DESC (de H1) contiene los valores que quieres asignar a LEVEL_3_DESC (en H3), treatas es la función que puede mover esa línea de linaje.

    Aquí está la medida refinada.

    Tested Solution = 
    VAR _SelectedLevel5 = VALUES(HIER[LEVEL_5_DESC])
    
    RETURN
    CALCULATE(
        [Avg of HANDNP],
        REMOVEFILTERS(HIER),             -- Remove existing context from the visual
        HIER[AC_HIERARCHY_CODE] = "H3",  -- Force the calculation to look at H3
        HIER[HLEVEL] = "MANUFACTURER",   -- Ensure we are looking at the right level type
        TREATAS(
            _SelectedLevel5,             -- Take the selection from the visual (e.g., "Toyota" from Level 5)
            HIER[LEVEL_3_DESC]           -- Apply it as a filter to Level 3
        )
    )

    La salida resultante es la siguiente que se muestra:

    He adjuntado un archivo pbix de ejemplo.

    Saludos

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Muchas gracias, tienes razón, pero para intentar mantener los filers necesito añadir keepfilters como este

      CALCULATE(
      [Promedio de HANDNP],
      REMOVERFILTERS(HIER),
      HIER[AC_HIERARCHY_CODE] = "H3",
      HIER[HLEVEL] = "FABRICANTE",

      -- Mapa LEVEL_5_DESC → LEVEL_3_DESC
      TREATAS( VALORES( AQUÍ[LEVEL_5_DESC] ), AQUÍ[LEVEL_3_DESC] ),

      -- Conservar el filtro existente en LEVEL_1_DESC
      KEEPFILTERS( VALORES( HIER[LEVEL_1_DESC] ) )
      )

  • Puedes usar TREATAS en DAX para que los valores de una columna actúen como filtro en otra columna, igual que quieres para HIER[LEVEL_5_DESC] y HIER[LEVEL_3_DESC].

    Prueba a reescribir tu medida así:

    VAR Selected_Level_5 = VALORES(AQUÍ[LEVEL_5_DESC]) VAR H1_Filter = CALCULAR( [Promedios de HANDNP], AQUÍ[AC_HIERARCHY_CODE] = "H1" ) VAR H3_Filter = CALCULAR( [Promedios de HANDNP], AQUÍ[AC_HIERARCHY_CODE] = "H3", TREATAS(Selected_Level_5, AQUÍ[LEVEL_3_DESC]) ) DEVOLVER SI( SELECTEDVALUE(AQUÍ[AC_HIERARCHY_CODE]) = "H3", H3_Filter, H1_Filter )
    • Este patrón utiliza TREATAS para mapear los valores seleccionados de LEVEL_5_DESC en LEVEL_3_DESC cuando se filtra H3.

    • Cambia [Promedio de HANDNP] con tu cálculo real según sea necesario.

    • Pon esta medida en tu visual. Cuando filtras H3, LEVEL_5_DESC funciona como LEVEL_3_DESC.

    Esto te permite intercambiar dinámicamente filtros entre columnas según tu filtro jerárquico

  • Hola

    Comparte algunos datos con los que trabajar, explica la pregunta y muestra el resultado esperado. Comparte datos en un formato que pueda pegarse en un archivo de MS Excel.

  • Hola @Maximous89 ,

    Gracias por ponerte en contacto con el Foro de la Comunidad de Microsoft Fabric.

    ¿Podrías avisarnos si el problema se ha resuelto? Quería comprobar si tuviste la oportunidad de revisar la información proporcionada por @DataNinja777 y @Shubham_rai955 . Si aún necesitas apoyo, por favor háznoslo saber, estaremos encantados de ayudarte.

    Gracias.