Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

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.

AmudhaKumaran_0-1632308410096.png

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    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-_count2 

    12222.PNG

    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

8 Replies

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      No @amitchandak,

      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])))

      AmudhaKumaran_0-1632481626573.png

  • No @AmudhaKumaran,

    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)

    111.PNG

    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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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.

      AmudhaKumaran_1-1632483464317.png

      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.

      AmudhaKumaran_2-1632483598192.png

      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's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        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-_count2 

        12222.PNG

        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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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.