Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
5 years ago

Ayuda de RANKX

Estoy intentando crear una medida para crear una columna clasificada para una tabla.

Nombre de la tabla: vCallBackBC (consulte la imagen siguiente para ver las columnas)

El rango se determinará en orden por los datos de las siguientes columnas:

1º) Ciclo

2º) Fecha de contratación

3º) Nombre

Aquí está el DAX que tengo hasta ahora:

Rango BC = RANKX(vCallBackBC,[Ciclo],,DESC)
(Sé que esto solo está mirando una de las tres columnas por las que necesito ordenar, pero quería al menos ordenar por [Ciclo] primero para asegurarme de que funciona antes de agregar las otras columnas).

PERO sigo recibiendo un error: "Un solo valor para la columna 'Cycle' en la tabla 'vCallBackBC' no se puede determinar. Esto puede suceder cuando una fórmula de medias hace referencia a una columna que contiene muchos valores sin especificar una agregación como min, max, count o sum para obtener un único resultado.

Help pic.png

¿Alguna pista? Estoy seguro de que a mi DAX le falta algo...

8 Replies

  • Solo hay 3 valores en la columna [Cycle], 16, 17 y 18,... ese es el criterio de clasificación principal, luego usando Hire Date como desempate, Name es el desempate final. Espero que eso ayude.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @WilliamFaulkner Eso es fantástico, pero si hace referencia a una columna en una medida, todavía necesita un agregador, incluso si solo tiene un valor único en esa columna o incluso una sola fila en la tabla.

  • Además, la primera entrada de RANK() debe ser con la función ALL o ALLELECTED

    BC Rank = RANKX(ALL(vCallBackBC),[Ciclo],,DESC)

  • Allí, @WilliamFaulkner;

    Puede modificar el mesaure de la siguiente manera:

    Measure = RANKX(ALL(vCallBackBC),CALCULATE(MAX([Cycle])),,DESC)

    Si desea basarlo en tres columnas, pruébelo:

    BC Rank =
    RANKX (
        ALL ( vCallBackBC ),
        RANKX ( ALL ( vCallBackBC ), CALCULATE ( MAX ( [Cycle] ) ),, DESC ) * 10000
            + RANKX ( ALL ( vCallBackBC ), CALCULATE ( MAX ( [Hire Date] ) ),, DESC ) * 100
            + RANKX ( ALL ( vCallBackBC ), CALCULATE ( MAX ( [Name] ) ),, DESC ),
        ,
        ASC
    )
    

    La salida final se muestra a continuación:

    vyalanwumsft_0-1627891118455.png

    Saludos
    Team_ de apoyo comunitario Yalan Wu
    Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Allí, @WilliamFaulkner;

    ¿La respuesta anterior es útil para usted? Si es así, ¿le importaría aceptar las respuestas útiles como soluciones? Entonces somos capaces de cerrar el hilo. Más personas que tienen el mismo requisito encontrarán la solución rápidamente y se beneficiarán aquí. Gracias.

    Saludos
    Team_ de apoyo comunitario Yalan Wu
    Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.