Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Cálculo dinámico en función de la selección de la segmentación

Hola a todos,

Necesito crear una medida que calcule una puntuación para cada hospital en función de un cálculo que solo incluya hospitales dentro del mismo estado.

En mi modelo de datos tengo una jerarquía que comienza con el estado (DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL2], la ciudad (DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL1]) y el hospital (DIM_GEO_NO_RLS[DES_GEONIVEL2]). Como puede ver, este último proviene de otra tabla. Por lo tanto, la columna de estado tiene valores como B0100, B0200, B0300, etc., y para cada valor tenemos varios hospitales con sus nombres.

Tengo el dax a continuación para calcular la puntuación de cada hospital, pero se basa en un cálculo más largo considerando todos los hospitales. Por lo tanto, a lo largo del cálculo se tiene en cuenta el crecimiento del hospital, luego la mediana de los crecimientos de todos los hospitales (es decir, la mediana de todos los estados) y luego los agrupa en consecuencia. Pero necesito el cálculo para considerar solo la mediana de los hospitales del mismo estado y también en el grupo. Entonces la idea es tener un slicer para la visualización con el que pueda elegir qué estado con sus hospitales debe mostrarse.

Entonces, básicamente, el cálculo debe ser dinámico, solo teniendo en cuenta los hospitales en el estado seleccionado, por lo que el puntaje de cada hospital se basa en el cálculo a nivel estatal.

Sé que el dax es un poco complicado, ya que toma el crecimiento de cada hospital y agrega algún cálculo como la mediana de todos los crecimientos, luego agrupa los crecimientos individuales y agrega un nuevo cálculo. Pero creo que es la primera parte de table_ la que es decisiva para calcular la mediana y hacer la agrupación de los hospitales del estado seleccionado.


FUERON table_ =
FILTRO(
ADDCOLUMNS(TODO(DIM_GEO_NO_RLS[LÍNEA], DIM_GEO_NO_RLS[ID_TERRNIVEL1], DIM_GEO_NO_RLS[DES_GEONIVEL2])
, "Crecimiento", CALCULAR([CM% Hibor TTO 3M Informe no_rls Felipe] - [CM% HIBOR TTO 3M PREV NO_RLS FELIPE], ELIMINAR FILTROS(DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL1_FILTER], DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL2_FILTER]), ELIMINAR FILTROS(DIM_GEO_NO_RLS[DES_GEONIVEL3_FILTER], DIM_GEO_NO_RLS[DES_GEONIVEL4_FILTER]))
)
, DIM_GEO_NO_RLS[LÍNEA] = "B" && DIM_GEO_NO_RLS[ID_TERRNIVEL1]<>54)
FUERON table_2 =
ADDCOLUMNS(table_
, "Crecimiento medio", MEDIANX(table_, [Crecimiento])
)
FUERON table_3 =
ADDCOLUMNS(table_2
, "Crecimiento máximo G1", MAXX(filtro(table_2, [Crecimiento] >= [Crecimiento medio]), [Crecimiento])
, "Crecimiento mínimo G1", BRIBONA(filtro(table_2, [Crecimiento] >= [Crecimiento medio]), [Crecimiento])
, "Crecimiento máximo G2", MAXX(filtro(table_2, [Crecimiento] < [Crecimiento medio]), [Crecimiento])
, "Crecimiento mínimo G2", BRIBONA(filtro(table_2, [Crecimiento] < [Crecimiento medio]), [Crecimiento])
)
FUERON table_4 =
ADDCOLUMNS(table_3
, "Hibortt 40%", SI([Crecimiento] >= [Crecimiento mediano], DIVIDIR(([Crecimiento]-[Crecimiento mínimo G1])*5, ([Crecimiento máximo G1] - [Crecimiento mínimo G1]), 0) + 5, DIVIDIR(([Crecimiento]-[Crecimiento mínimo G2])*5, ([Crecimiento máximo G2] - [Crecimiento mínimo G2]), 0))
)
FUERON table_5 =
ADDCOLUMNS(table_4
, "Valor de nivel B", [Hibortt 40%]
)
FUERON table_6 =
ADDCOLUMNS(table_5
, "Clasificación de nivel B", RANKX(table_5, [Valor Tier B], [Valor Tier B], DESC, Omitir)
)
FUERON table_7 =
ADDCOLUMNS(table_6
, "Clasificación MAX Nivel B", MAXX(table_6, [Nivel de clasificación B])
)
FUERON _SelectedTerritory = SELECTEDVALUE(DIM_GEO_NO_RLS[DES_GEONIVEL2])
DEVOLUCIÓN BRIBONA(FILTRO(table_7, [DES_GEONIVEL2]=_SelectedTerritory), [Valor de nivel B])
¡Realmente agradecería cualquier tipo de ayuda!
1 REPLY 1
Syndicate_Admin
Administrator
Administrator

Hola @felipereyes_ ,

Con respecto a su pregunta, coloque su campo 'estado' en la segmentación e intente modificar su variable 'table_'. Esto debería poder filtrar por estado antes de calcular la mediana.

 VAR table_ =
    FILTER(
        ADDCOLUMNS(ALL(DIM_GEO_NO_RLS[LINEA], DIM_GEO_NO_RLS[ID_TERRNIVEL1], DIM_GEO_NO_RLS[DES_GEONIVEL2])
    , "Growth", CALCULATE([CM% Hibor TTO 3M Informe no_rls Felipe] - [CM% HIBOR TTO 3M PREV NO_RLS FELIPE], REMOVEFILTERS(DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL1_FILTER], DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL2_FILTER]), REMOVEFILTERS(DIM_GEO_NO_RLS[DES_GEONIVEL3_FILTER], DIM_GEO_NO_RLS[DES_GEONIVEL4_FILTER]))
        )
    , DIM_GEO_NO_RLS[LINEA] = "B" && DIM_GEO_NO_RLS[ID_TERRNIVEL1]<>54) && DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL2] = SELECTEDVALUE(DIM_TERRITORIO_NO_RLS[DES_TERRNIVEL2])

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.