Estoy creando una App para crear un Ranking y quisiera mostrar una columna con el numero de la ordenación que corresponda, es decir, que salga el número del orden del Ranking. Pongo una foto de mi app para que se entienda mejor. Como se ve en la imagen sale un listado ordenado de mayor a menor por los puntos que tiene cada persona pero me gustaría autogenerar en la columna1 los números 1,2,3... para ver claramente la posición de cada usuario.
Tengo una tabla Ranking con los idSocio de los socios que tienen puntos y una columna virtual que me hace el sumatorio de los puntos por cada idSocio.
Solved! Go to Solution.
@Ventury92 wrote:
no en el orden correcto
COUNT(
SPLIT(
ANY(
SPLIT(
(" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , "),
(" , " & [PuntosTotales] & " , ")
)
),
" , "
)
)
This will affect performance FOR SURE:
Make sure to order things in your expression so that it's the same that you have in your UI
He investigado sobre esto pero no es lo que necesito...
Gracias!
No es lo que necesitas o no lograste implementarlo?
Yo creo que eso no es correcto ya que no me va a autogenerar los números.
Básicamente es que muestre 1,2,3,4,... siempre fijo en la primera columna, independientemente de la ordenación que realice en las otras filas, es decir, que me muestre el número de fila que ocupa en la lista en ese momento.
Aclararé algo en caso de dudas:
No hay un método oficial para hacer lo que solicitas.
La alternativa es que dependiendo de los datos que tenga tu vista, utilices una columna virtual que calcule su ubicación en relación a todo el rango de datos, por eso te envié el post de @Steve ya que su expresión hace exactamente eso.
Deberás asegurarte de usar una expresión que use exactamente el mismo rango que en la vista y que tenga el mismo orden. Si utilizas un método que permite reordenar las filas, no funcionará
En ese caso, debe de ser culpa mía el no saber implementar dicha expresión ya que soy nuevo en esto y voy un poco perdido... ¿serías tan amable de ayudarme? Ahora mismo la configuración de la tabla es la siguiente:
La columna idSocio simplemente contiene los id de aquellos socios que tengan algún punto registrado y esta referenciado a la tabla "Socios" para coger el nombre de cada uno de ellos.
PuntosTotales es una columna virtual de un sumatorio de varias hojas de excel filtrando por el id del socio.
Posición es la columna virtual que estoy intentando hacer para que muestre la posición, si inserto la expresión que comentas del post me aparece el número 3 todo el rato ( no entiendo el motivo de esto tampoco).
Veo que en el ejemplo hay un EnumList y Enum... no sé que debería poner en mi caso.
Necesitas un número de posición que hace de Rankin dependiendo de los puntos totales, cierto?
Esto es un Rankin general?
correcto, eso es.
Considera que si dos tienen el mismo puntaje total, compartirán la posición (favor probar la expresión y volver con comentarios)
COUNT(
SPLIT(
ANY(
SPLIT(
(" , " & [PuntosTotales] & " , "),
(" , " & Ranking[PuntosTotales] & " , ")
)
),
" , "
)
)
El resultado es el mismo que con el ejemplo, me aparece todo el rato Pos = 3 si hay más de un resultado.
Si solo hay un resultado muestra Pos = 1.
La configuración de la tabla queda de la siguiente manera (PuntosTotales y Posicion son columnas virtuales):
Lo voy a chequear.
Por cierto, por qué la cantidad de resultados varía? Tienes más de una vista? Es una Inline? Todo esto afectaría la posibilidad de crear un ranking.
Te recuerdo nuevamente que esto es un workaround, no hay forma de hacerlo nativamente
En el ejemplo únicamente varia para hacer la comprobación de como funcionaba la columna. No tengo más de una vista.
Por qué una imágen dice "Pos." y la otra "Posicion" así como "PuntosTotales" vs "Puntos"?
Son cambios visuales que voy haciendo nada más. La estructura interna no cambia.
Por favor prueba con esta variación:
COUNT(
SPLIT(
ANY(
SPLIT(
(" , " & [PuntosTotales] & " , "),
(" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , ")
)
),
" , "
)
)
Destaco que no aplica para vistas Inline
Sigue saliendo lo mismo... :S No entiendo muy bien de donde viene ese 3, no tiene ningún sentido...
Si te sirve y quieres realizar alguna prueba. tengo 5 tablas:
-Asfalto, Trail, Ciclismo (tablas en la que se registran los puntos para cada socio según la modalidad)
-Socios (Datos de los socios)
-Ranking ( tabla que únicamente registra el NumeroSocio que tiene algún punto registrado, al hacer insert en alguna tabla de Asfalto, Trail, Cilcismo se copia el NumeroSocio si no existe ya a esta tabla)
Podrías por favor postear acá la cadena completa de la expresión según el asistente?
Esto lo encuentras con el botón "Test" que aparece en la esquina inferior al momento de escribir la expresión
Cometí un error.
Por favor, intenta esta vez con la siguiente expresión:
COUNT(
SPLIT(
ANY(
SPLIT(
(" , " & Ranking[PuntosTotales] & " , "),
(" , " & [PuntosTotales] & " , ")
)
),
" , "
)
)
Parece ser que ahora si saca distintos números pero no en el orden correcto según la puntuación. Comprobando la excel lo que hace es sacar el número de la posición que tiene en la columna como si fuera el _ROWNUMBER
@Ventury92 wrote:
no en el orden correcto
COUNT(
SPLIT(
ANY(
SPLIT(
(" , " & SORT(UNIQUE(Ranking[PuntosTotales]), TRUE) & " , "),
(" , " & [PuntosTotales] & " , ")
)
),
" , "
)
)
Esta si es la solución, muchísimas gracias!
User | Count |
---|---|
37 | |
25 | |
21 | |
20 | |
16 |