Forum Discussion
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:
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.
¿Alguna pista? Estoy seguro de que a mi DAX le falta algo...
8 Replies
- Syndicate_AdminAdministrator
@WilliamFaulkner Probablemente necesite una función de agregación alrededor de su [Cycle], como MAX([Cycle]. Esta es una lectura divertida:
- Syndicate_AdminAdministrator
No estoy seguro de qué agregación usar. Empezando a pensar que no estoy cortado para DAX...
- Syndicate_AdminAdministrator
@WilliamFaulkner No importa la agregación, tiendo a usar MAX.
- Syndicate_AdminAdministrator
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_AdminAdministrator
@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.
- Syndicate_AdminAdministrator
Además, la primera entrada de RANK() debe ser con la función ALL o ALLELECTED
BC Rank = RANKX(ALL(vCallBackBC),[Ciclo],,DESC)
- Syndicate_AdminAdministrator
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:
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. - Syndicate_AdminAdministrator
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.