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 ) ) ) )
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.
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:
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?
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.
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
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.
- 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.
- 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 ) ) ) )