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

Promedio ponderado por categoría en un gráfico filtrado (o no): medida calculada

Hola

Estoy construyendo un dashbord para representar los KPI a través del tiempo con gráficos de área como este:

Untitled.png

Mi conjunto de datos es una lista de KPI en diferentes fechas para varias ubicaciones, con la información relacionada con el tamaño en el que se basó el KPI, aquí [Número de coches]

UbicaciónFechaNúmero de cochesKPI 1KPI 2
Alemania11/01/202050100%95%
Nos12/01/202020098%78%
Alemania12/01/20207058%14%
Alemania12/01/20208086%45%

Tengo varias ubicaciones que se filtrarán o no en el panel:

si se selecciona una ubicación en otro gráfico, mi gráfico de KPI (mostrado arriba) mostrará los valores de porcentajes [KPI 1] para la ubicación hasta la hora [Fecha], hasta ahora tan bueno que lo hice usando las columnas de tabla simples que tengo hasta ahora.

Ahora, si no se selecciona nada, quiero mostrar los KPI para todos los países, pero ponderado con el número total de coches en toda la ubicación en ese momento, y aquí estoy bloqueando.

¿Alguna idea de si debo crear una nueva medida o transformar mis datos?

2 ACCEPTED SOLUTIONS

No @Ad7,

En primer lugar, el número que calcula se redondean en mi cálculo no se redondean en el cálculo, sino en el formato por lo que hay una pequeña diferencia con lo que tiene, pero calcular sin redondeo tengo los mismos valores.

Cree las dos medidas siguientes:

Number_Cars KPI1 = 
VAR Number_Cars =
    SUMMARIZE (
        'Table',
        'Table'[Location],
        'Table'[Date],
        'Table'[Number of cars],
        'Table'[KPI 1],
        "Total_Cars",
            VAR Total_Cars_By_Day =
                FILTER (
                    SUMMARIZE (
                        ALL ( 'Table' ),
                        'Table'[Location],
                        'Table'[Date],
                        'Table'[Number of cars],
                        'Table'[KPI 1]
                    ),
                    'Table'[Date] = SELECTEDVALUE ( 'Table'[Date] )
                )
            RETURN
                SUMX ( Total_Cars_By_Day, 'Table'[Number of cars] )
    )
RETURN
    SUMX ( Number_Cars, 'Table'[Number of cars] / [Total_Cars] * 'Table'[KPI 1] )


KPI = IF(ISFILTERED('Table'[Location]), AVERAGE('Table'[KPI 1]), [Number_Cars KPI1])

Ahora el resultado es que necesitas:

MFelix_0-1610205628930.png

MFelix_1-1610205647720.png

Sólo dos cosas a tener en cuenta en el cálculo de Number_of_cars que necesita para reemplazar el KPI 1 para cada KPI que necesita calcular, la segunda cosa es que utilicé el valor promedio para el KPI, pero esto puede ser una suma o cualquier valor que necesite.

Adjuntar archivo PBIX.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

No @Ad7

Vuelva a realizar la medida del número de coche a lo siguiente:

Number_Cars KPI1 =
VAR Number_Cars =
    SUMMARIZE (
        'Table',
        'Table'[Location],
        'Table'[Date],
        'Table'[Number of cars],
        'Table'[KPI 1],
        "Total_Cars",
            VAR Total_Cars_By_Day =
                FILTER (
                    SUMMARIZE (
                        ALL ( 'Table' ),
                        'Table'[Location],
                        'Table'[Date],
                        'Table'[Number of cars],
                        'Table'[KPI 1]
                    ),
                    'Table'[Date] = SELECTEDVALUE ( 'Table'[Date] )
                        && 'Table'[KPI 1] <> BLANK ()
                )
            RETURN
                SUMX ( Total_Cars_By_Day, 'Table'[Number of cars] )
    )
RETURN
    SUMX (
        FILTER ( Number_Cars, 'Table'[KPI 1] <> BLANK () ),
        'Table'[Number of cars] / [Total_Cars] * 'Table'[KPI 1]
    )

Resultado en adjuntar archivo PBIX.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

14 REPLIES 14
MFelix
Super User
Super User

No @Ad7,

Cuando se refiere que desea tener la calcuta hecha por el total de coches lo que quiere decir que quiere tener para Alemania la suma de 50 + 70 + 80 dividido por el número total de coches 50 + 70 + 80 + 200 y luego multiplicar estos valores por los KPI?

Debe utilizar una medida similar a la siguiente:

Measure = 
IF (
    ISFILTERED ( 'Table'[Location] );
    DIVIDE (
        SUM ( 'Table'[Number of cars] );
        CALCULATE ( SUM ( 'Table'[Number of cars] ); ALL ( 'Table'[Location] ) )
    )
        * AVERAGE ( 'Table'[KPI 1] );
    AVERAGE ( 'Table'[KPI 1] )
)

Tenga en cuenta que la parte que necesita es el ISFILTERED el resto es sólo el cálculo simple, si se puede compartir en calcular el promedio de weigth y lo utiliza con el KPI puedo ajustarlo para usted.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Hola @MFelix ,

¡Gracias por el código! En realidad lo usé a mitad de camino para mostrar el valor cuando se filtra, pero es en el If Not que estoy bloqueando.


Cuando se refiere que desea tener la calcuta hecha por el total de coches lo que quiere decir que quiere tener para Alemania la suma de 50 + 70 + 80 dividido por el número total de coches 50 + 70 + 80 + 200 y luego multiplicar estos valores por los KPI?


Casi 🙂
Lo que quiero cuando no se selecciona nada es un KPI que pondera todas las ubicaciones KPI por el número respectivo de coches y la fecha, un ejemplo para KPI 1:

a- valor de fila en 'Tabla'[Número de coches]
b- suma de todos los valores de la columna 'Tabla'[Número de coches] con la misma fecha
c- valor de fila en 'Tabla'[KPI 1]

Suma(a/b*c)

Así que con mis datos 'Tabla' y para KPI 1:

el 11/01/2020:

50 / 50 * 100% á 100%

el 12/01/2020:

suma(
200 / (200+70+80) * 98% á 0,56
70 / (200+70+80) * 58% á 0,11
80 / (200+70+80) * 86% á 0,19
) - 86%

Así que cuando no se selecciona ninguna ubicación, mi gráfico de área promedio ponderado mostrará 100% en 11/01/2020 y 86% en 12/01/2020

No @Ad7,

En primer lugar, el número que calcula se redondean en mi cálculo no se redondean en el cálculo, sino en el formato por lo que hay una pequeña diferencia con lo que tiene, pero calcular sin redondeo tengo los mismos valores.

Cree las dos medidas siguientes:

Number_Cars KPI1 = 
VAR Number_Cars =
    SUMMARIZE (
        'Table',
        'Table'[Location],
        'Table'[Date],
        'Table'[Number of cars],
        'Table'[KPI 1],
        "Total_Cars",
            VAR Total_Cars_By_Day =
                FILTER (
                    SUMMARIZE (
                        ALL ( 'Table' ),
                        'Table'[Location],
                        'Table'[Date],
                        'Table'[Number of cars],
                        'Table'[KPI 1]
                    ),
                    'Table'[Date] = SELECTEDVALUE ( 'Table'[Date] )
                )
            RETURN
                SUMX ( Total_Cars_By_Day, 'Table'[Number of cars] )
    )
RETURN
    SUMX ( Number_Cars, 'Table'[Number of cars] / [Total_Cars] * 'Table'[KPI 1] )


KPI = IF(ISFILTERED('Table'[Location]), AVERAGE('Table'[KPI 1]), [Number_Cars KPI1])

Ahora el resultado es que necesitas:

MFelix_0-1610205628930.png

MFelix_1-1610205647720.png

Sólo dos cosas a tener en cuenta en el cálculo de Number_of_cars que necesita para reemplazar el KPI 1 para cada KPI que necesita calcular, la segunda cosa es que utilicé el valor promedio para el KPI, pero esto puede ser una suma o cualquier valor que necesite.

Adjuntar archivo PBIX.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

@MFelix,

Gracias por su tiempo, energía y propuesta detallada.

En realidad, solo tengo 1 valor de KPI por ubicación y fecha, así que está bien si usamos promedio como especificó 🙂, el resultado será el mismo.

Estoy tratando de implementar esto con mis propios datos, pero no estoy seguro de entender, entiendo la medida "KPI"

KPI = IF(ISFILTERED('Table'[Location]), AVERAGE('Table'[KPI 1]), [Number_Cars KPI1])

Pero pensé que usarías esta medida en el campo Valores del gráfico.

El gráfico está reaccionando como si estuviéramos usando esta medida: si se selecciona una ubicación, simplemente tomamos el KPI 1 para la ubicación, y si no hay filtro de ubicación, entonces se refiere a la medida [Number_Cars KPI1], sin embargo, en su gráfico sólo se utiliza [Number_Cars KPI1] como un valor, y todavía funciona. ¿Me estoy perdiendo algo?

No @Ad7,

El KPI de medida debe utilizarse en el gráfico de líneas, con respecto a la forma en que interactúan con otras visualizaciones, esto depende de la configuración de estas visualizaciones.

El que usted está haciendo referencia es la configuración de qué manera?


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

La solución funciona muchas gracias !


Sin embargo me doy cuenta de que algo está sesociando el resultado: puede suceder que nos falte valor para un KPI (valor vacío) como este :

Untitled.png


En esa situación tengo la impresión de que el código calculará el KPI 1 ponderado como tal:

50 / (50+300) * 100% á 14

300 / (50+300) * 0% á 0

14+0 a 14%, mientras que no quiero incluir el número de coches para el KPI vacío y sólo debe tener 100% como resultado.


@MFelix ¿Podríamos incluir un requisito de celda no vacía en la medida [Number_Cars KPI1] ?

(Acepté su solución anterior porque no especificé esto inicialmente)

No @Ad7

Vuelva a realizar la medida del número de coche a lo siguiente:

Number_Cars KPI1 =
VAR Number_Cars =
    SUMMARIZE (
        'Table',
        'Table'[Location],
        'Table'[Date],
        'Table'[Number of cars],
        'Table'[KPI 1],
        "Total_Cars",
            VAR Total_Cars_By_Day =
                FILTER (
                    SUMMARIZE (
                        ALL ( 'Table' ),
                        'Table'[Location],
                        'Table'[Date],
                        'Table'[Number of cars],
                        'Table'[KPI 1]
                    ),
                    'Table'[Date] = SELECTEDVALUE ( 'Table'[Date] )
                        && 'Table'[KPI 1] <> BLANK ()
                )
            RETURN
                SUMX ( Total_Cars_By_Day, 'Table'[Number of cars] )
    )
RETURN
    SUMX (
        FILTER ( Number_Cars, 'Table'[KPI 1] <> BLANK () ),
        'Table'[Number of cars] / [Total_Cars] * 'Table'[KPI 1]
    )

Resultado en adjuntar archivo PBIX.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Hola @MFelix, esto está funcionando como un encanto cuando mi KPI es >0%

Sin embargo, cuando el valor de KPI es 0% el código está considerando el valor como en blanco, y el [Número de coches] no se tiene en cuenta en el KPI ponderado.

Realmente no entiendo por qué, sin embargo, porque sólo especificamos <> BLANK ()

¿Alguna idea?

Editar:

Leí en línea que considerar 0 como en blanco era una particularidad de la expresión BLANK() en DAX. Encontré lo que quería reemplazando 'Tabla'[KPI 1] <> BLANK () por ISBLANK('Table'[KPI 1]) ? FALSE()

Me alegra haber terminado esto con una contribución personal final 🙂

No @Ad7,

No se dio cuenta de que tendría 0 valores para KPI, contento de que estaba abble para resolverlo.

Otras opciones serían hacer lo siguiente NO (ISBLANK('Table'[KPI 1])).


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



No @MFelix ,

Esto ya está funcionando bien y se implementó con éxito de mi lado.

Pero para desafiar un poco más: si nos gustaría tener el mismo cálculo de ponderación al filtrar y seleccionar más de 1 ubicación, ¿qué vería en el primer campo de ISFILTERED?

KPI - IF(ISFILTERED('Table'[Location]), AVERAGE('Table'[KPI 1]), [Number_Cars KPI1])

Idea sería cuando se selecciona más de 1 ubicación para poder tener los KPI ponderados en el número de coches para estas ubicaciones solamente, y no para todos como cuando no se selecciona nada y estamos mostrando [Number_Cars KPI1]

No @Ad7,

¿Desea calcular el número de coches para los países seleccionados sólo en lugar de llegar a todos los países en el día específico?

No @MFelix ,

Quería decir que corresponda a Number_Cars KPI1 a la ubicación filtrada también.

Hasta ahora se utiliza sólo por ir a través de todas las ubicaciones cuando no tenemos filtro de ubicación en su lugar

No @Ad7,

Lo sentimos por el retraso, sólo tiene dos preguntas acerca de su configuración es ¿qué desea que suceda si hay más de un valor para un país en un día para Alemania hay 2 valores para 12/01 por lo que desea el promedio o calcular en consecuencia a los valores seleccionados?

No obstante, he configurado las dos medidas siguientes (sólo algunos pequeños cambios en las anteriores);

Number_Cars KPI1 = 
VAR Number_Cars =
    SUMMARIZE (
        'Table',
        'Table'[Location],
        'Table'[Date],
        'Table'[Number of cars],
        'Table'[KPI 1],
        "Total_Cars",
            VAR Total_Cars_By_Day =
                FILTER (
                    SUMMARIZE (
                        ALLSELECTED(  'Table' ),
                        'Table'[Location],
                        'Table'[Date],
                        'Table'[Number of cars],
                        'Table'[KPI 1]
                    ),
                    'Table'[Date] = SELECTEDVALUE ( 'Table'[Date] ) && 'Table'[KPI 1] <> BLANK() 
                )
            RETURN
                SUMX ( Total_Cars_By_Day, 'Table'[Number of cars] )
    )
RETURN
    SUMX (FILTER( Number_Cars, 'Table'[KPI 1] <> BLANK()), 'Table'[Number of cars] / [Total_Cars] * 'Table'[KPI 1] )


KPI =
IF (
    ISFILTERED ( 'Table'[Location] ),
    IF (
        HASONEVALUE ( 'Table'[Location] ),
        AVERAGE ( 'Table'[KPI 1] ),
        [Number_Cars KPI1]
    ),
    [Number_Cars KPI1]
)

Compruebe la fijación del resultado.

Hola @MFelix ,

Gracias por la respuesta.

Para responder a su pregunta si una ubicación tiene más de 1 KPI en el mismo mes, entonces el promedio de los 2 es bueno (esto es lo que ya especificó si no estoy equivocado).

Después de volver a leer el código, y no entender por qué no estaba teniendo en cuenta el número de coches para las ubicaciones seleccionadas sólo, finalmente me di cuenta de que en la fila 13 de Number_Cars KPI1 cambiamos ALL('Table') a ALLSELECTED('Table') !

Esto está funcionando perfectamente, gracias por su ayuda y su paciencia a lo largo de este proyecto. Me está proporcionando mucha ayuda para entender cómo usar el lenguaje y definitivamente me llevaré este hogar 🙂

Ten un buen día.

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.