Forum Discussion
Countrows basados en el resultado de RANKX
Hola gurús de PBI,
Tengo una tabla de datos llamada Tabla con dos columnas "Producto" y "Volumen". He realizado el cálculo de los 5 mejores Rankx que funciona bien. Ahora quiero contar las filas basadas en el resultado de Rankx y devolver los 5 primeros o los 4 primeros dependiendo del número de resultados de la medida Top5. Por ejemplo, el resultado de la medida Top5 devuelve 9 resultados, quiero poner una condición si devuelve <=5 resultados Quiero devolver la medida Top5, si no, quiero devolver Top4 así que <=4.
Creo que esto necesitaría un recuento agregado al cálculo de Rankx, pero luchando por combinar los dos.
Top 5 Medida;
| Producto | Arriba5 |
| Producto J | 1 |
| Producto N | 2 |
| Producto G | 3 |
| Producto I | 3 |
| Producto E | 4 |
| Producto A | 5 |
| Producto B | 5 |
| Producto K | 5 |
| Producto M | 5 |
Resultado deseado ya que Top 5 devuelve 9 resultados (volver al top4)
| Producto | Arriba5 |
| Producto J | 1 |
| Producto N | 2 |
| Producto G | 3 |
| Producto I | 3 |
| Producto E | 4 |
Tabla de datos
|
5 Replies
- Syndicate_Admin
Administrator
Aquí hay una solución para usted
Measure = rankx(all('Table'[Product]),CALCULATE(sum('Table'[Volume])),,DESC)+rankx(all('Table'[Product]),CALCULATE(max('Table'[Product])),,DESC)/100 Measure 2 = rankx(all('Table'[Product]),[Measure],,ASC)- Syndicate_Admin
Administrator
Gracias por su respuesta. Basándome en mis requisitos, no busco un divisor de desempate, sino más bien lógica si los 5 primeros resultados en más de 5 resultados vuelven al top 4. La única forma en que pude ver esto es por lógica de countrows en el Rankx
- Syndicate_Admin
Administrator
Puedes probar esto
Measure 2 = VAR _tbl=SUMMARIZE(ALL('Table'),'Table'[Product],"value",sum('Table'[Volume])) VAR _tbl2=ADDCOLUMNS(_tbl,"rank",rankx(_tbl,[value],,DESC,Dense)) VAR _count=COUNTROWS(FILTER(_tbl2,[rank]<=5)) return If(_count>5,IF([Measure]<5,1))y agregue la medida 2 para filtrar
Por favor, vea el archivo adjunto a continuación