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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Agregación de matriz a nivel en la jerarquía

Hola

Tengo problemas para conseguir lo que deseo. En la tabla siguiente, el nivel verde se calcula utilizando los valores de los rectángulos azules. Sin embargo, para que la visualización tenga sentido tendría que tomar el promedio de la jerarquía justo debajo, los círculos naranjas.

Básicamente me gustaría que el estado promedio de un nivel tenga en cuenta el promedio del nivel justo después en la jerarquía, en lugar de los valores en el nivel más granular.

pcaldeira_0-1599846095930.png

Gracias

Pedro Caldera

6 REPLIES 6
v-yiruan-msft
Community Support
Community Support

Hola @pcaldeira,

¿Podría proporcionar algunos datos de muestra y el resultado deseado? Por ejemplo, tiene la tabla en la siguiente captura de pantalla. ¿Cuál es el valor correcto para D1 y D2 con el círculo rojo? Proporcione la lógica de cálculo o la fórmula. ¿Como D1 (E1 + E2) / 2?

matrix with hierarchy level.JPG

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola @yingyinr ,

Ese es exactamente el cálculo que deseamos. Para D1, el valor sería (E1+E2)/2o (13,00+9,00)/2 a 11. Para D2, el valor sería (E3 + E4)/2 á (19,50 + 20)/2 a 19,75, que no es el resultado que se calculó (19,67).

La idea también sería permitir que el usuario omita un nivel. Por ejemplo, omitiendo el nivel C, el cálculo para C1 sería el promedio de E1 y E2, y para C2 sería el promedio de E3 y E4.

Para una primera instancia, nos gustaría saber cómo lograr los cálculos dados en el primer párrafo (D2 -(E3 + E4)/2 á (19.50 + 20)/2 a 19,75 y D1 á (E1+E2)/2o (13,00 +9,00)/2 a 11)

Gracias

Saludos

Pedro

Hola @pcaldeira ,

He creado una base de archivo pbix de ejemplo en su requisito, compruebe si eso es lo que desea. Se han creado las 2 medidas siguientes en el archivo.

Average of level 5 = 
CALCULATE (
    AVERAGE ( 'Table'[Value] ),
    FILTER (
        'Table',
        'Table'[Level] = MAX ( 'Table'[Level] )
            && 'Table'[Level 1] = MAX ( 'Table'[Level 1] )
            && 'Table'[Level 2] = MAX ( 'Table'[Level 2] )
            && 'Table'[Level 3] = MAX ( 'Table'[Level 3] )
            && 'Table'[Level 4] = MAX ( 'Table'[Level 4] )
    )
)
Average value = 
VAR _avgValue =
    CALCULATE ( AVERAGE ( 'Table'[Value] ) )
VAR _tab =
    SUMMARIZE (
        'Table',
        'Table'[Level],
        'Table'[Level 1],
        'Table'[Level 2],
        'Table'[Level 3],
        "avgofl4", SUMX ( VALUES ( 'Table'[Level 4] ), [Average of level 5] )
    )
VAR _sumofAvg =
    MAXX ( _tab, [avgofl4] )
VAR _countoflvl4 =
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[Level 4] ),
        FILTER (
            'Table',
            'Table'[Level] = MAX ( 'Table'[Level] )
                && 'Table'[Level 1] = MAX ( 'Table'[Level 1] )
                && 'Table'[Level 2] = MAX ( 'Table'[Level 2] )
                && 'Table'[Level 3] = MAX ( 'Table'[Level 3] )
        )
    )
RETURN
    IF (
        ISFILTERED ( 'Table'[Level 3] ) && NOT ( ISFILTERED ( 'Table'[Level 4] ) ),
        DIVIDE ( _sumofAvg, _countoflvl4 ),
        _avgValue
    )

Aggregating matrix on level in the hierarchy_2.JPG

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola @yingyinr,

Gracias por su pronta respuesta,

Esto logró el valor previsto que deseamos, para el único nivel exacto en la jerarquía que presenté, no para toda la jerarquía.

Los niveles más altos, continuarán mostrando el valor incorrecto (que todavía se basa en la jerarquía más baja.

En los datos de maqueta, como ejemplo, deseamos que el valor de A sea (B1 +B2)/2o (23,8 + 21,75) /2 x 22,78 y no A-22,89 que proviene de SUM (Fi-1,2,3,4,5,6,7,8,8,9o)/Recuento(Fi-1,2,3,4,5,6,7,8,9o) á (31 + 17 +19 + 27 + 25 + 22 + 25 + 20 + 20) / 9 x22,89

Siguiendo el patrón que proporcionó creo que podemos codificar el cálculo para el valor correcto para cada nivel superior, pero me preguntaba si hay una manera más elegante de generalizar este cálculo para todos los niveles dentro del contexto. Con esto quiero decir:

Ei - SUMA (Niveles F en Ei)/ CUENTA (Niveles F en Ei),

Di - SUMA (Niveles E en Di)/ CUENTA (Niveles E en Di),

Ci - SUMA (Nivel D en Ci)/ CUENTA (Niveles D en Ci), hasta A

Saludos

Pedro

Syndicate_Admin
Administrator
Administrator

@pcaldeira, no muy claro. Pero si quieres que el subtotal sea diferente de lo que viene automáticamente puedes usar isinscope

https://www.kasperonbi.com/use-isinscope-to-get-the-right-hierarchy-level-in-dax/

Greg_Deckler
Super User
Super User

@pcaldeira Creo que quieres MM3TR&R - https://community.powerbi.com/t5/Quick-Measures-Gallery/Matrix-Measure-Total-Triple-Threat-Rock-amp-...


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.