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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Andvil
Helper V
Helper V

Gráfico circular agrupado por clasificación

Hola a todos,

Estoy tratando de agrupar un gráfico circular de muchas ventas de empresas de mensajería teniendo en cuenta los siguientes aspectos:

  • La Compañía X, la Empresa Y y la Empresa Z, que son las 2, 4 y 5 principales respectivamente, deben tener su propia porción independiente
  • Agrupa a las 5 empresas principales en otra rebanada, esta rebanada no incluye la Empresa X, Y y Z, ya que cada una de ellas debe tener su propia rebanada. Etiquetarlo como "Otros Mensajeros Top 5"
  • Agrupar las otras empresas en otra rebanada bajo la etiqueta "Otros"

Por lo tanto, tendría 5 sectores diferentes en mi gráfico circular y cada mes que actualizo mi base de datos, el gráfico circular también actualizará los 5 mejores mensajeros de acuerdo con sus ventas.

Estaré muy agradecido por su ayuda, he estado atascado en este problema por un tiempo.

Mejor

Jalv

1 ACCEPTED SOLUTION

Hola @jlopezentregas ,

La tabla de clasificación se utiliza por grupo sin categoría como referencia. La columna 'Categoría' real está en su tabla 'MRN_2020', por lo que debe crear la columna de cálculo 'Grupo' en la tabla 'MRN_2020' utilizando la fórmula anterior:

Group = 
VAR tab =
    FILTER (
        SUMMARIZE ( MRN_2020, MRN_2020[Cargo Company], "KILOS", SUM( MRN_2020[Kilos] ) ),
        NOT (MRN_2020[Cargo Company] IN { "ENTREGAS ESPECIALES ESPENTREGAS S.A.", "DHL EXPRESS ECUADOR S.A.", "LAARCOURIER EXPRESS S.A." } )
    )
VAR newtab =
    ADDCOLUMNS (
        tab,
        "Rank",
        VAR _category = 'MRN_2020'[Category]
        RETURN
            RANKX ( FILTER ( 'MRN_2020', 'MRN_2020'[Category] = _category ), [KILOS],,DESC,Dense )
    )
VAR _group =
    VAR _company = 'MRN_2020'[Cargo Company]
    RETURN
        IF (
            _company IN { "ENTREGAS ESPECIALES ESPENTREGAS S.A.", "DHL EXPRESS ECUADOR S.A.", "LAARCOURIER EXPRESS S.A." },
            [Cargo Company],
            VAR x =
                SUMX ( FILTER ( newtab, [Cargo Company]= _company ), [Rank] )
            RETURN
                IF ( x >= 1 && x <= 5, "Other Top 5 Countries", "Others" )
        )
RETURN
    _group

Y puede colocar su columna de categoría en el filtro visual del gráfico circular para filtrar cada categoría:

pie chart.png

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

12 REPLIES 12
Anonymous
Not applicable

Hola @jlopezentregas ,

¿Podría proporcionar algunos datos de muestra? El gráfico circular se dividirá en 5 partes con estos valores al igual que la siguiente captura de pantalla? ¿Si la siguiente captura de pantalla es el resultado esperado?

1. Compañía X

2. Compañía Y

3. Compañía Z

4. Las 5 principales empresas excepto la empresa X,Y y Z

5. Las empresas de izquierda

pie chart.JPG

Saludos

Rena

Hola @yingyinr

Otro usuario me ayudó con esta fórmula, pero al usarla en el informe original, recibo el error "La expresión hace referencia a varias columnas. Varias columnas no se pueden convertir en un valor escalar"

Tabla de rangos =
PESTAÑA VAR = FILTRO ( RESUMIR (
        'Tabla', 'Tabla'[Empresa], "Ventas", SUMA ( 'Tabla'[Ventas] ) ),
        NO ( [Empresa] IN { "Empresa X", "Empresa Y", "Empresa Z" } )
    ) VAR
newtab =
    ADDCOLUMNS ( pestaña, "Rango", RANKX ( pestaña, [Ventas] ) )
VAR _table = RESUMIR (
        'Tabla',
        'Tabla'[Empresa],
        "Ventas", SUM ( 'Tabla'[Ventas] ),
        "Grupo",
        VAR _company = [Empresa]
        RETURN IF ( _company IN {
                "Empresa Z", "Empresa Y", "Empresa X" },
                [Empresa],
                VAR x =
                    SUMX ( FILTRO ( nueva ficha, [Empresa] = _company ), [Rango] )
                RETURN IF ( x > =
                    1 &&x < = 5, "Ohter Top 5 Países", "Otros")
            ) ) RETORNO
    _table

Además, lo siguiente que me gustaría hacer es filtrar según 2 categorías diferentes. Por ejemplo, quiero tener el gráfico circular donde puedo filtrar según "documentos" o "paquetes". Si selecciono el filtro "documentos", el gráfico circular calcula las 5 principales empresas con más ventas en la categoría Documentos, y si quiero mostrar la cuota de mercado solo con respecto a los paquetes, entonces filtro los paquetes y las actualizaciones del gráfico circular con las 5 principales con respecto a los paquetes.

Sería el mismo ejercicio, pero añadiendo la opción de separar o filtrar entre dos categorías.

Muchas gracias por su ayuda.

mejor

José López

Anonymous
Not applicable

Hola @jlopezentregas ,

En realidad, lo que ese usuario creó es la pestaña calculadano se mide ni se calcula la columna. Si usó su fórmula proporcionada con tabla calculada, funciona bien. Por favor, compruebe la siguiente captura de pantalla.

rank companies.JPG

Además, hay otro método: crear 5 medidas diferentes para mostrar las ventas resumidas de estas 5 cinco particiones.

5 measures.JPG

Puede consultar los detalles de ambos métodos en este enlace.

Saludos

Rena

v-yingjl
Community Support
Community Support

Hola @jlopezentregas ,

Puede probar esta medida para crear una tabla de cálculo:

Rank table =
VAR tab =
    FILTER (
        SUMMARIZE ( 'Table', 'Table'[Company], "Sales", SUM ( 'Table'[Sales] ) ),
        NOT ( [Company] IN { "Company X", "Company Y", "Company Z" } )
    )
VAR newtab =
    ADDCOLUMNS ( tab, "Rank", RANKX ( tab, [Sales] ) )
VAR _table =
    SUMMARIZE (
        'Table',
        'Table'[Company],
        "Sales", SUM ( 'Table'[Sales] ),
        "Group",
        VAR _company = [Company]
        RETURN
            IF (
                _company IN { "Company Z", "Company Y", "Company X" },
                [Company],
                VAR x =
                    SUMX ( FILTER ( newtab, [Company] = _company ), [Rank] )
                RETURN
                    IF ( x >= 1 && x <= 5, "Ohter Top 5 Countries", "Others" )
            )
    )
RETURN
    _table

La tabla de clasificación le gustará de esta manera:

rank table.png

Coloque la columna de grupo y la columna de ventas en el gráfico circular y el resultado final es como a la derecha del informe:

pie chart result.png

Aquí está mi archivo de muestra que espera ayudarle, por favor pruébelo: Gráfico circular agrupado por clasificación

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @v-yingjl ,

En primer lugar, gracias por responderme y ayudarme, eso es exactamente lo que estoy tratando de hacer. Desafortunadamente, copié la medida en mi informe original, pero recibí el siguiente error: "La expresión hace referencia a varias columnas. Varias columnas no se pueden convertir en un valor escalar". ¿Por qué estoy recibiendo este error y cómo puedo resolverlo?

Además, lo siguiente que me gustaría hacer es filtrar según 2 categorías diferentes. Por ejemplo, quiero tener el gráfico circular donde puedo filtrar de acuerdo con "documentos" o "paquetes". Si selecciono el filtro "documentos", el gráfico circular calcula las 5 principales empresas con más ventas en la categoría Documentos, y si quiero mostrar la cuota de mercado con respecto a los paquetes solo, selecciono paquetes de filtro y las actualizaciones del gráfico circular.

Sería el mismo ejercicio, pero añadiendo la opción de separar o filtrar entre dos categorías.

Mejor

José López

Hola @jlopezentregas ,

Acerca de grupo por categoría, agrego una columna de categoría en la tabla como esta para crear grupo:

category table.png

La columna crear un cálculo utiliza la fórmula similar a la que publiqué por primera vez:

Group =
VAR tab =
    FILTER (
        SUMMARIZE ( 'Table', 'Table'[Company], "Sales", SUM ( 'Table'[Sales] ) ),
        NOT ( [Company] IN { "Company X", "Company Y", "Company Z" } )
    )
VAR newtab =
    ADDCOLUMNS (
        tab,
        "Rank",
        VAR _category = 'Table'[Category]
        RETURN
            RANKX ( FILTER ( 'Table', 'Table'[Category] = _category ), [Sales] )
    )
VAR _group =
    VAR _company = [Company]
    RETURN
        IF (
            _company IN { "Company Z", "Company Y", "Company X" },
            [Company],
            VAR x =
                SUMX ( FILTER ( newtab, [Company] = _company ), [Rank] )
            RETURN
                IF ( x >= 1 && x <= 5, "Ohter Top 5 Countries", "Others" )
        )
RETURN
    _group

A continuación, puede crear un gráfico circular y utilizar la columna de categoría como segmentación de datos:

slicer group.png

Aquí está el archivo de muestra sobre grupo por categoría que espera que también le ayude, por favor pruébelo: Rango y grupo por category.pbix

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

HI @v-yingjl,

Hice lo que me dijiste y finalmente no tuve ningún error en la fórmula para crear la mesa. Pero, al crear el gráfico circular, solo muestra las categorías "Otros". Adjunto el informe que estoy usando, ¿puede ayudarme a comprobar mis errores?

Ejemplo de rango N superior de la carta circular

De lo contrario, muchas gracias por toda la ayuda que ha proporcionado anteriormente.

Mejor

José L

Hola @jlopezentregas ,

La tabla de clasificación se utiliza por grupo sin categoría como referencia. La columna 'Categoría' real está en su tabla 'MRN_2020', por lo que debe crear la columna de cálculo 'Grupo' en la tabla 'MRN_2020' utilizando la fórmula anterior:

Group = 
VAR tab =
    FILTER (
        SUMMARIZE ( MRN_2020, MRN_2020[Cargo Company], "KILOS", SUM( MRN_2020[Kilos] ) ),
        NOT (MRN_2020[Cargo Company] IN { "ENTREGAS ESPECIALES ESPENTREGAS S.A.", "DHL EXPRESS ECUADOR S.A.", "LAARCOURIER EXPRESS S.A." } )
    )
VAR newtab =
    ADDCOLUMNS (
        tab,
        "Rank",
        VAR _category = 'MRN_2020'[Category]
        RETURN
            RANKX ( FILTER ( 'MRN_2020', 'MRN_2020'[Category] = _category ), [KILOS],,DESC,Dense )
    )
VAR _group =
    VAR _company = 'MRN_2020'[Cargo Company]
    RETURN
        IF (
            _company IN { "ENTREGAS ESPECIALES ESPENTREGAS S.A.", "DHL EXPRESS ECUADOR S.A.", "LAARCOURIER EXPRESS S.A." },
            [Cargo Company],
            VAR x =
                SUMX ( FILTER ( newtab, [Cargo Company]= _company ), [Rank] )
            RETURN
                IF ( x >= 1 && x <= 5, "Other Top 5 Countries", "Others" )
        )
RETURN
    _group

Y puede colocar su columna de categoría en el filtro visual del gráfico circular para filtrar cada categoría:

pie chart.png

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @jlopezentregas ,

Lamento que no pueda explicar claramente la expresión anteriormente. Intente utilizar esta expresión para crear una tabla de cálculo que no sea una medida y obtendrá el resultado correcto.

ct.png

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

amitchandak
Super User
Super User

@jlopezentregas ,

Refiera si esto puede ayudar:https://www.daxpatterns.com/dynamic-segmentation/

https://www.daxpatterns.com/static-segmentation/

Full Power BI Video 20 Hours YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Soy nuevo en fórmulas Dax así que no pude encontrar la solución. No sé qué estoy haciendo mal y también no tengo valores min y max, ya que los datos de ventas se actualizan mensualmente y varían mucho.

Me gustaría adjuntar un enlace de un exaple de lo que estoy tratando de hacer con el fin de recibir más ayuda: TOP N POR ENLACE EJEMPLO DE RANKING

Gracias de antemano por cualquier ayuda o consejo adicional.

amitchandak
Super User
Super User

@jlopezentregas ,

Consulte si esto puede ayudar a:https://www.daxpatterns.com/dynamic-segmentation/

https://www.daxpatterns.com/static-segmentation/

Full Power BI Video 20 Hours YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

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

Top Solution Authors