Forum Discussion
Problemas de TopN/RankX
Quiero encontrar los 10 mejores productos. Quiero verificar las ventas mensuales de esos 10 productos principales.
Los 10 mejores productos deben calcularse dinámicamente Tengo que aplicar múltiples filtros en esto (por ejemplo: ubicación, categoría)
Mi petición es construir el filtro de nivel visual TopN manualmente con la ayuda de las medidas DAX.
#PowerBI #Desktop #TopN # RankX #Filter
15 Replies
- Syndicate_Admin
Administrator
@amitchandak @Ahmedx @Ritaf1983 ¿Podría compartir sus puntos de vista o podría etiquetar a otras personas? Gracias de antemano
- Syndicate_Admin
Administrator
Hi, @Snapdrag
¿Puede proporcionar s¿Amplios datos para las pruebas? La información confidencial se puede eliminar por adelantado. ¿Qué tipo de resultados esperados esperas? También puede mostrarlo con imágenes o Excel. Espero su respuesta.
Saludos
Equipo de apoyo comunitario _Charlotte
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
- Syndicate_Admin
Administrator
Hola @v-zhangti
No pude compartir los datos, pero puedo explicar esto en detalle.Supongamos que hay una lista de 20 productos. Quiero ver los 5 mejores productos y las ventas totales a nivel de mes.
Compartiendo el scrrnshot a continuación como referencia de la salida que estoy esperando.
Productos TOP5 Mes Año Productos ene-23 feb-23 mar-23 abr-23 Total A 20 10 40 10 80 B 25 12 50 20 107 C 20 11 40 10 81 D 23 30 30 30 113 E 24 50 10 40 124 Total 112 113 170 110 505 Esto se puede lograr fácilmente con el filtro de nivel visual TOPN pero mi requisito es hacerlo con medidas DAX porque tengo que parametrizar "N".
He intentado hacerlo con TOPN y RANKX, pero cuando la columna Mes-Año aparece en la imagen, no funciona correctamente.Espero que esto aclare el problema.
- Syndicate_Admin
Administrator
Hi, @Snapdrag
Puede probar los siguientes métodos.
Rank = RANKX(ALL('Table'),CALCULATE(SUM('Table'[Sales]),ALLEXCEPT('Table','Table'[Products])),,DESC,Dense)Measure = IF([Rank]<=3,1,0)Los 3 mejores productos se muestran en este momento.
Saludos
Equipo de apoyo comunitario _Charlotte
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
- Syndicate_Admin
Administrator
Hola @v-zhangti
Gracias por la rápida respuesta. Esta medida funciona bien cuando no aplico ningún filtro en la matriz. Pero cuando aplico filtro para ubicación o categoría en la matriz, la medida me está dando un resultado incorrecto. ¿Podría sugerir por favor?Thnaks en Advance de nuevo.
- Syndicate_Admin
Administrator
Por favor, pruebe esto
Amount = CALCULATE(SUM('Table'[Sales])) ------ ----- SALES for 4 rx = CALCULATE([Amount],KEEPFILTERS( WINDOW(0,ABS,4,ABS,SUMMARIZE(ALLSELECTED('Table'),'Table'[Month Year]),ORDERBY([Amount],DESC)))) ------ SALES for 10 rx = CALCULATE([Amount],KEEPFILTERS( WINDOW(0,ABS,10,ABS,SUMMARIZE(ALLSELECTED('Table'),'Table'[Month Year]),ORDERBY([Amount],DESC)))) - Syndicate_Admin
Administrator
Hola @Ahmedx, Gracias por el descanso rápido. La medida no funciona correctamente, ya que no puede restringir las filas superiores. Devuelve todas las filas.
- Syndicate_Admin
Administrator
¿Qué pasa, no te entiendo?
Comprobar archivo - Syndicate_Admin
Administrator
Hola @Ahmedx, estoy compartiendo la salida (captura de pantalla) a continuación donde puede ver fácilmente que la medida dax no puede restringir los registros.
- Syndicate_Admin
Administrator
Muestra cuál debería ser el resultado