Forum Discussion
RANKX
Hola equipo,
Buscando hep en la función RANKX. Cualquier ayuda inmediata es apreciada.
Tengo una tabla de hechos con varias filas para un solo ID basado en muchas dimensiones. La puntuación total se identifica para cada ID. Necesito clasificar los IDs en función de la puntuación total.
Por ejemplo, en la siguiente tabla, tengo 3 nombres, el rango final debe ser John - 1, Lisa - 2 y Ann - 3. Intenté hacer esto usando RANKX dax. Pero los resultados no son los esperados. Cuando clasifico la tabla usando el puntaje total, John ocupa el puesto 1, pero en lugar de que Lisa obtenga el 2, se da el rango 6 ya que hay 5 filas para John. Por favor, avise.
Hola
Consulte la siguiente fórmula.
rank1 = var _tab=SUMMARIZE('Table','Table'[total scare]) Return RANKX(_tab,[total scare],,DESC,Dense)final = var _count1=CALCULATE(DISTINCTCOUNT('Table'[name id]),FILTER('Table','Table'[rank1]<EARLIER('Table'[rank1]))) var _count2=CALCULATE(DISTINCTCOUNT('Table'[rank1]),FILTER('Table','Table'[rank1]<EARLIER('Table'[rank1]))) Return 'Table'[rank1]+_count1-_count2Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Saludos
Equipo de apoyo a la comunidad _ Polly
8 Replies
- Syndicate_Admin
Administrator
¿Se puede pegar el Dax?
- Syndicate_Admin
Administrator
@AmudhaKumaran , Pruebe una medida como
rankx(allselected(Table), calculate(Sum(Table[Score]), allexcept(Table, Table[name])))
- Syndicate_Admin
Administrator
Gracias por su respuesta. Probé la medida, todavía estoy obteniendo el mismo resultado.
DAX:RANKX(ALLSELECTED('Rank Test Table'), CALCULATE(SUM('Rank Test Table'[Total Score]), ALLEXCEPT('Rank Test Table', 'Rank Test Table'[nombre])))
- Syndicate_Admin
Administrator
Cree una medida para hacer referencia al valor de la puntuación total.
total = SELECTEDVALUE('Table'[total scare])A continuación, cree una medida para ordenar.
measure = RANKX(ALL('Table'),[total],,ASC, Dense)Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Saludos
Equipo de apoyo a la comunidad _ Polly
- Syndicate_Admin
Administrator
Hola @v-polly-msft ,
Gracias por su respuesta. Para el conjunto de datos dado, estoy de acuerdo en que la lógica está funcionando como se esperaba.
Pero estoy buscando un RANGO normal no un RANGO DENSO. Cuando probé esa medida para los datos reales, el rango se basa solo en la puntuación TOTAL, no en la identificación o el nombre. Quiero decir, si hay 100 ID únicos, espero 100 rangos basados en ID. Pero con la lógica "SELECTEDVALUE", el rango se basará solo en Total. Probé la misma medida para RANK normal en lugar de DENSE. Esto apunta de nuevo a mi cuestión inicial.
Si pruebo Dense, obtendré los rangos 1, 2 y 3. Pero los resultados reales para este conjunto de datos deberían ser, Anu - 1, John -1, Lisa -3, Sana - 3, Ann - 5. Todavía no estoy obteniendo este resultado.
¡Cualquier ayuda sería apreciada!
- Syndicate_Admin
Administrator
Hola
Consulte la siguiente fórmula.
rank1 = var _tab=SUMMARIZE('Table','Table'[total scare]) Return RANKX(_tab,[total scare],,DESC,Dense)final = var _count1=CALCULATE(DISTINCTCOUNT('Table'[name id]),FILTER('Table','Table'[rank1]<EARLIER('Table'[rank1]))) var _count2=CALCULATE(DISTINCTCOUNT('Table'[rank1]),FILTER('Table','Table'[rank1]<EARLIER('Table'[rank1]))) Return 'Table'[rank1]+_count1-_count2Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Saludos
Equipo de apoyo a la comunidad _ Polly
- Syndicate_Admin
Administrator
Este es en realidad el único ejemplo de RANKX() que he podido poner a trabajar. ¿Por qué DAX en PBI es una brujería tan completa? Nada en la documentación de Microsoft insinúa esta solución. Sheesh.