Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola.
Quisiera saber como ordenar una tabla pivotante en base a una expresión.
Venta:
LOAD * INLINE [
Año, Cliente, Venta
2012, JOSE LUNA, 69230224
2012, JORGE DE LA CRUZ, 3290696
2012, JUAN PEREZ, 86658
2012, LUCAS CHAVEZ, 1456463
2012, JAVIER MOTA, 6052659
2012, LUIS GODOY, 158193
2013, JOSE LUNA, 11332788
2013, CARLA SOTELO, 2987280
2013, JORGE DE LA CRUZ, 336553
2013, JUAN PEREZ, 6946210
2013, LUCAS CHAVEZ, 6126016
2014, EDWIN MANRIQUE, 7806000
2014, JOSE LUNA, 1411731
2014, CHARLIE GARCIA, 3240084
2014, CARLA SOTELO, 25675965
2014, JORGE DE LA CRUZ, 500415
2014, JUAN PEREZ, 1410815
2015, EDWIN MANRIQUE, 81654303
2015, CHARLIE GARCIA, 9121589
2015, CARLA SOTELO, 2667105
2015, MIGUEL TELLO, 4288344
2015, JORGE DE LA CRUZ, 6482590
2016, EDWIN MANRIQUE, 18903300
2016, JOSE LUNA, 10124
2016, JESUS SOTO, 39093247
2016, CHARLIE GARCIA, 25491196
2016, CARLA SOTELO, 3923349
2017, CHARLIE GARCIA, 559684
2017, CARLA SOTELO, 318000
2017, JORGE DE LA CRUZ, 4766
2017, MILUZKA ZAPATA, 176045
];
Lo que se tiene
Lo que se quiere obtener
Hola Luis, lo complicado de esto es que el orden se asigna a cada uno de los valores del campo, por lo que si el cliente "X" es el que más ventas ha tenido le dará el orden 1, independientemente de la segmentación que tenga por delante (el año en este caso).
Para evitar esto sería simular que el cliente 'X' de cada año es un valor distinto, de forma que se pueda asignar el orden de forma independiente. Podrías probar cambiando la dimensión Cliente a una dimensión calculada como:
=Aggr(Dual(Cliente, RowNo(TOTAL)), Año, Cliente)
Esto hace que a cada combinación se le asigne un valor numérico distinto, manteniendo la representación en texto solo con el nombre del cliente. De esta forma al ordenar por la expresión "Sum(Venta)", debería ordenarlo como esperas.
Esto tiene la pega de que al seleccionar el cliente en la propia tabla no estás seleccionando solo al cliente, realmente estás seleccionando la combinación cliente-año.
Luis como estas?
Te paso qvw con lo solicitado
Saludos
Hola Luis,
Creo que esto que intentas no se puede hacer con una tabla pivotante de más de una dimensión. Al final la tabla pivotante te ordena, en tu caso, los comerciales (segunda dimensión) de cada año en función del Sum(Venta) de todos los años. Por eso "EDWIN MANRIQUE" siempre aparece primero en los años que tiene venta, porque en todo el histórico es el que más ha vendido.
Ojo... Digo creo porque he mirado varios hilos y no he encontrado solución... Ojalá que tú la encuentres y la compartas en tal caso.
Un saludo,
H
Buen Día Luis,
Lo único que se me ocurre, es que en la pestaña de Ordenar para la dimensión 'Año' habilites la opción de "Ordenar por Valor Y " como se muestra en la siguiente imagen.
El único problema con esto es que, se mueve el orden de los años, a como los tenias inicialmente.
Saludos.
Si intente con esa opción, pero se cuando se activa subtotales en el campo cliente, cambia los orden de los años.
Gracias por el archivo pero es lo mismo que tengo.
Hola Luis, lo complicado de esto es que el orden se asigna a cada uno de los valores del campo, por lo que si el cliente "X" es el que más ventas ha tenido le dará el orden 1, independientemente de la segmentación que tenga por delante (el año en este caso).
Para evitar esto sería simular que el cliente 'X' de cada año es un valor distinto, de forma que se pueda asignar el orden de forma independiente. Podrías probar cambiando la dimensión Cliente a una dimensión calculada como:
=Aggr(Dual(Cliente, RowNo(TOTAL)), Año, Cliente)
Esto hace que a cada combinación se le asigne un valor numérico distinto, manteniendo la representación en texto solo con el nombre del cliente. De esta forma al ordenar por la expresión "Sum(Venta)", debería ordenarlo como esperas.
Esto tiene la pega de que al seleccionar el cliente en la propia tabla no estás seleccionando solo al cliente, realmente estás seleccionando la combinación cliente-año.
Hola Ruben.
Yo había hecho una dimensión calculada que representaba una dimensión de ordenamiento antes del campo cliente (-) luego lo ocultaría con colores.
=aggr((Año*pow(10,len(count(total DISTINCT Cliente))))+rank(Aggr(Sum(Venta),Año,Cliente),4),Año,Cliente)
Pero tu script es optimo.
Adicional a eso he visto que cumple una peculiaridad, la dimensión calculada a pesar que muestra texto tiene un formato numero.
Para poner el campo cliente a la izquierda como Datos (Texto) no funciona, pero si se considera como Datos(Numérico) a la izquierda si lo representa.
Muchas gracias por el tiempo.