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
Syndicate_Admin
Administrator
Administrator

% acumulado por categoría para pareto

Estoy tratando de crear un gráfico de pareto utilizando el gráfico de columnas y líneas, pero me estoy topando con un problema al intentar calcular el % acumulado que se requiere en un pareto.

Tengo 2 tablas, Pruebas y Anomalías de Prueba vinculadas por Id. de Prueba:

hwong_0-1624906580785.png

Dados los siguientes datos, me gustaría ver los resultados a continuación al ordenar los resultados por el recuento de errores por tipo de anomalía:

Pruebas

Id. de pruebaoperadorresultadofecha
1abecedariopasardomingo, 27 de junio de 2021
2abecedariofallardomingo, 27 de junio de 2021
3Xyzpasardomingo, 27 de junio de 2021
4Xyzfallardomingo, 27 de junio de 2021
5abecedariofallardomingo, 27 de junio de 2021
6Xyzpasarlunes, 28 de junio de 2021
7Xyzfallarlunes, 28 de junio de 2021
8abecedariopasarlunes, 28 de junio de 2021
9abecedariofallarlunes, 28 de junio de 2021
10Xyzfallarlunes, 28 de junio de 2021

Anomalías de prueba

Id. de pruebaanomalía
2C
2B
4A
5C
7B
9C
9B
10C
10B
10A

Resultado esperado

anomalíaRecuento de anomalías (ordenar DESC por esta columna)% acumulado
B440%
C480%
A2100%

¿Cómo puedo calcular el % acumulado en este escenario?

P.S. He leído artículos y he visto otras respuestas donde hay una columna clasificable de valores precal calculados para calcular el % acumulado, pero en este caso no hay ninguna columna de ordenación porque el recuento de anomalías será dinámico en función de la selección del filtro. Por ejemplo, el usuario puede filtrar por Fecha y eso cambiaría el criterio de ordenación.

Ejemplo de PBIX se puede descargar aquí:

https://1drv.ms/u/s!Arsjvofj3uEZh8sJnGi8OVry7dWAQw?e=vgZzZv

1 ACCEPTED SOLUTION

De todos modos, lo descubí usando algunas tablas temporales para obtener la "columna de ordenación". Fue mucho más complicado de lo que había previsto. Esta es la solución con la que terminé:

Cumulative % = 
    VAR countSummaryTable =
        CALCULATETABLE(
            SUMMARIZE(
                'Test Anomalies',
                'Test Anomalies'[Anomaly],
                "Anomaly Count", COUNT('Test Anomalies'[Anomaly])
            ),
            REMOVEFILTERS('Test Anomalies'[Anomaly])
        )
    VAR rankedSummaryTable =
        ADDCOLUMNS(
            countSummaryTable,
            "Anomaly Count Rank", RANKX(countSummaryTable, 
                                    RANKX(countSummaryTable, [Anomaly Count] + DIVIDE(
                                                                                RANKX(countSummaryTable, [Anomaly]),
                                                                                COUNTROWS(countSummaryTable) + 1)
                                    ), ,ASC,Dense))
    VAR selectedAnomalyRank = MAXX(FILTER(rankedSummaryTable, [Anomaly]=SELECTEDVALUE('Test Anomalies'[Anomaly])), [Anomaly Count Rank])
    VAR totalAnomalies = SUMX(countSummaryTable, [Anomaly Count])
    RETURN        
        DIVIDE(
            SUMX(
                FILTER(rankedSummaryTable, [Anomaly Count Rank] <= selectedAnomalyRank),
                [Anomaly Count]
            ),
            totalAnomalies
        )

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

hola

¿Alguna razón por la que la anomalía está en el orden de B, C, A y no C, B, A cuando B y C tienen el mismo recuento? Además, para esta pregunta específica, ¿cuál es el uso de la tabla Pruebas? Para su esperado, todo lo que necesitamos es la Tabla de anomalías de prueba.

hola

En caso de empate (en este caso B y C tienen el mismo recuento), no importa en qué orden aaparecen las anomalías. Resulta que el gráfico de columnas y la tabla de Power BI lo mostraban en el orden B,C,A cuando puse los datos en un objeto visual y los ordené por el recuento de anomalías.

El motivo de la tabla Pruebas es que quiero filtrar por fecha. En los datos de ejemplo, el filtrado para mostrar solo el lunes frente al domingo debería dar como resultado un orden diferente. Solo para el domingo, el orden de pareto se convierte en "C, A, B", y solo para el lunes, el orden de pareto se convierte en "B, C, A".

gracias

Hubert

Syndicate_Admin
Administrator
Administrator

No @hwong ,

Para calcular el valor total de ejecución, debe tener una 'columna ordenada'.

En función de su informe, ya que utiliza la columna de fecha para filtrar, por lo que necesita otra "columna ordenada" para calcular el valor total de ejecución.

Consulte: Calcular dinámicamente un total acumulado o un total acumulado de Power BI

Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

hola

Necesito ordenar por el recuento de las anomalías, que debe ser dinámico para tener en cuenta los filtros y las segmentaciones de datos. Esta es la razón por la que no sé qué usar para una "columna de ordenación". El criterio de ordenación no se conoce hasta que se presenta el objeto visual y se tienen en cuenta los filtros o segmentaciones de datos.

gracias

Hubert

De todos modos, lo descubí usando algunas tablas temporales para obtener la "columna de ordenación". Fue mucho más complicado de lo que había previsto. Esta es la solución con la que terminé:

Cumulative % = 
    VAR countSummaryTable =
        CALCULATETABLE(
            SUMMARIZE(
                'Test Anomalies',
                'Test Anomalies'[Anomaly],
                "Anomaly Count", COUNT('Test Anomalies'[Anomaly])
            ),
            REMOVEFILTERS('Test Anomalies'[Anomaly])
        )
    VAR rankedSummaryTable =
        ADDCOLUMNS(
            countSummaryTable,
            "Anomaly Count Rank", RANKX(countSummaryTable, 
                                    RANKX(countSummaryTable, [Anomaly Count] + DIVIDE(
                                                                                RANKX(countSummaryTable, [Anomaly]),
                                                                                COUNTROWS(countSummaryTable) + 1)
                                    ), ,ASC,Dense))
    VAR selectedAnomalyRank = MAXX(FILTER(rankedSummaryTable, [Anomaly]=SELECTEDVALUE('Test Anomalies'[Anomaly])), [Anomaly Count Rank])
    VAR totalAnomalies = SUMX(countSummaryTable, [Anomaly Count])
    RETURN        
        DIVIDE(
            SUMX(
                FILTER(rankedSummaryTable, [Anomaly Count Rank] <= selectedAnomalyRank),
                [Anomaly Count]
            ),
            totalAnomalies
        )

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.