Gráfico circular – Top 5 – Resto denominado Otro

Un usuario Pregunto ✅

sjoerdbuis

https://www.dropbox.com/s/z2job1mric80n0d/Top%205%20Other.pbix?dl=0

Hola a todos,

Por favor, encuentre adjunto mi Tablero.

Columna, fecha, monto, empresa

Estoy buscando un gráfico circular que muestre el Top 5 donde el Top <5 se muestra como Otro.

Como el gráfico circular se usa con el tiempo, por supuesto, el Top 5 cambia con el tiempo y también lo hace el grupo Otro, por supuesto …

¿Alguna sugerencia?

jdbuchanan71

En respuesta a sjoerdbuis

Tienes TOPN (5. Hay un período en el que debería haber una coma.

También necesitará unirse al [Companies] tabla para el [Transacties] tabla.

También debe cambiar la fórmula para devolver solo $ para los 5 primeros u otros, solo necesitamos agregar una intersección a @ tex628 excelente trabajo.

TopN = 
VAR TOP_N =
    CALCULATETABLE ( 'Companies', TOPN ( 5, ALL ( 'Companies' ), [Amount2] ) )
RETURN
    IF (
        SELECTEDVALUE ( 'Companies'[Company] ) = "Other",
        CALCULATE ( [Amount2], ALL ( 'Companies' ) ) - CALCULATE ( [Amount2], TOP_N ),
        IF (
            SELECTEDVALUE ( Companies[Company] ) = BLANK (),
            CALCULATE ( [Amount2], ALL ( 'Companies' ) ),
            CALCULATE ( [Amount2], INTERSECT ( Companies, TOP_N ) )
        )
    )

top5fast.jpg

Anónimo

Utilice el siguiente dax

Suma directa de TopN =
CALCULAR (
SUM (Tabla3[Value] ),
TOPN (
5,
GROUPBY (Tabla3, Tabla3[Category] ),
CALCULAR (SUMA (Tabla3[Value] ))
)
)

jdbuchanan71

Hola @sjoerdbuis

Actualicé su archivo .pbix con las adiciones necesarias.

  • Una tabla calculada que contiene las empresas únicas y una fila «Otros».
  • Las medidas para Importe, Top5, Otro, Top 5 + Otro

https://www.dropbox.com/s/tocvgtmsqpwxneg/Top%205%20Other.pbix?dl=0

Debido a que las cantidades eran negativas, estaba actuando un poco extraño y obteniendo solo 4 cuando pedí «top» 5 (creo que debido a la fila vacía en blanco que DAX agrega a las tablas), así que tuve que engañarlo para sacar «Top» 6, que nos dio 5 cantidades.

top5.jpg

El mérito de toda esta lógica es para Lukas Lotters, quien nos dio esta excelente publicación.

https://www.oraylis.de/blog/show-top-n-and-rest-in-power-bi

sjoerdbuis

En respuesta a jdbuchanan71

hola, parece que la sintaxis de su métrica top5 es incorrecta.

¿Puedes echar un vistazo?

@ jdbuchanan71

jdbuchanan71

En respuesta a sjoerdbuis

¿A qué te refieres con @sjoerdbuis? Mi lista de los 5 principales coincide con la lista de los 5 principales que solicitó en su ejemplo:

top5.jpg

sjoerdbuis

En respuesta a jdbuchanan71

Hola

@ jdbuchanan71

Sí, su salida mostrada es excelente,

pero cuando voy al metrix y lo revalido con enter, ¿da un error de sintaxis?Top 5.JPG

jdbuchanan71

En respuesta a sjoerdbuis

Cuando descargue el archivo, está funcionando, intente descargarlo nuevamente. Incluso modifiqué la medida agregando el comentario al final, funciona bien.

top5measure.jpg

sjoerdbuis

En respuesta a jdbuchanan71

@ jdbuchanan71

¿Podría ser un elemento de versión?

Estoy trabajando en: 2.68.5432.841 de 64 bits (abril de 2019)

extraño que cuando revalido Top5 me da:

La sintaxis de ‘ADDCOLUMNS’ es incorrecta. (DAX (IF (HASONEVALUE (Empresas[Company] ), CALCULAR ( [Total Amount], FILTRO (Transacciones, [Company] = VALORES (Empresas[Company]) && CONTAINS (TOPN (6. ADDCOLUMNS (ALLNOBLANKROW (Empresas[Company] ), «5 principales cantidades», CALCULAR ( [Total Amount], FILTRO (Transacciones, Transacciones[Company] = ANTES ( [Company] )))), [Top 5 Amount], DESC), Empresas[Company], VALORES (Empresas[Company] ))))))).

jdbuchanan71

En respuesta a sjoerdbuis

Podría ser, supongo. Estoy trabajando en 2.70.5494.761 de 64 bits (junio de 2019)

tex628

Hola,

Esto se toma de un cálculo similar que hice con los principales clientes. Me requirió agregar un registro a la tabla de clientes que solo contiene «Otro» como CustomerName. ¡Espero que pueda funcionar para usted o que al menos obtenga algo de inspiración!

TopN = 
VAR TOP_N = CALCULATETABLE('Customer',TOPN(5, ALL('Customer'),[Amount]))
Return
IF(SELECTEDVALUE('Customer'[CustomerName])="Other",
CALCULATE([Amount],ALL('Customer'))
-
CALCULATE([Amount],TOP_N)
,
IF(SELECTEDVALUE('Customer'[CustomerName])=BLANK(),
CALCULATE([Amount],ALL('Customer')),
[Amount]))

sjoerdbuis

En respuesta a tex628

@ tex628

¿Puede volver a editar la medida de acuerdo con mi archivo de ejemplo?

Todavía no soy el de un mago de DAX.

tex628

En respuesta a sjoerdbuis

¿Puede agregar las empresas como una tabla de dimensiones?

sjoerdbuis

En respuesta a tex628

@ tex628

¿como esto?

https://www.dropbox.com/s/z8uk7dj7ryodgin/Top%205%20Otherv2.pbix?dl=0

tex628

En respuesta a sjoerdbuis

image.png

TopN = 
VAR TOP_N = CALCULATETABLE('Companies',TOPN(5, ALL('Companies'),[Amount]))
Return
IF(SELECTEDVALUE('Companies'[Company])="Other",
CALCULATE([Amount],ALL('Companies'))
-
CALCULATE([Amount],TOP_N)
,
IF(SELECTEDVALUE(Companies[Company])=BLANK(),
CALCULATE([Amount],ALL('Companies')),
[Amount]))
Amount = SUM(Transacties[Amounty]) * -1

El filtro topN en el diagrama circular debe contener las 6 empresas principales para incluir tanto las 5 principales como las «Otras». Debe ser TopN por el [TopN] valor.

Espero que lo hagas funcionar. De lo contrario, solo dame un grito y ¡echaremos otro vistazo!

jdbuchanan71

En respuesta a tex628

@ tex628 @sjoerdbuis

Estaba modificando uno de mis modelos usando el código de @ tex628 y encontré un par de ajustes necesarios.

  1. Si la tabla que contiene las cosas que estamos agrupando (empresa, cliente, categoría) tiene un espacio en blanco, la trampa total fue poner la cantidad total en esas líneas, así como el total de la tabla. Se modificó para usar NOT ISFILTER.
  2. Si contamos cosas que pueden aparecer en varias categorías, es decir, COUNTDISTINCT (Clientes[CustNum] ) el cálculo restante se estaba reduciendo demasiado, así que lo cambié para usar EXCEPTO
TopN
VAR Top_N =
    CALCULATETABLE ( Companies, TOPN ( 5, ALL ( 'Companies' ), [Amount2] ) )
RETURN
    IF ( 
        NOT ISFILTERED ( 'Companies'[Company] ), CALCULATE ( [Amount2], ALL ( 'Companies' ) ),
        IF ( SELECTEDVALUE ( 'Companies'[Company] ) = "Other",
            CALCULATE ( [Amount2], EXCEPT ( ALL ( 'Companies' ), Top_N ) ),
            CALCULATE ( [Amount2], INTERSECT ( 'Companies', Top_N ) )
        )
    )

Pensé en compartir estos en caso de que pudieran ser útiles.

sjoerdbuis

En respuesta a tex628

@ tex628

https://www.dropbox.com/s/hreafmni9y1sd9v/Top%205%20Otherv3.pbix?dl=0

Tengo un error de sintaxis en todas las funciones, busque adjunto.

¿Quizás estoy haciendo algo mal aquí?

jdbuchanan71

En respuesta a sjoerdbuis

Tienes TOPN (5. Hay un período en el que debería haber una coma.

También necesitará unirse al [Companies] tabla para el [Transacties] tabla.

También debe cambiar la fórmula para devolver solo $ para los 5 primeros u otros, solo necesitamos agregar una intersección a @ tex628 excelente trabajo.

TopN = 
VAR TOP_N =
    CALCULATETABLE ( 'Companies', TOPN ( 5, ALL ( 'Companies' ), [Amount2] ) )
RETURN
    IF (
        SELECTEDVALUE ( 'Companies'[Company] ) = "Other",
        CALCULATE ( [Amount2], ALL ( 'Companies' ) ) - CALCULATE ( [Amount2], TOP_N ),
        IF (
            SELECTEDVALUE ( Companies[Company] ) = BLANK (),
            CALCULATE ( [Amount2], ALL ( 'Companies' ) ),
            CALCULATE ( [Amount2], INTERSECT ( Companies, TOP_N ) )
        )
    )

top5fast.jpg

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *