Forum Discussion
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
- Syndicate_Admin
Administrator
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
Administrator
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] ) )
)
- Syndicate_Admin
Administrator
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
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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.