Skip to main content
Announcements
Get Ready. A New Qlik Learning Experience is Coming February 17! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Ordenar Tabla Pivotante

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

Tabla1.png

Tabla2.png

Lo que se quiere obtener

Tabla3.png

1 Solution

Accepted Solutions
rubenmarin

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.

View solution in original post

7 Replies
fkeuroglian
Partner - Master
Partner - Master

Luis como estas?

Te paso qvw con lo solicitado

Saludos

hector_munoz
Specialist
Specialist

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

bertinabel
Creator
Creator

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.

OrdenaTablaPivote_1.JPG

El único problema con esto es que, se mueve el orden de los años, a como los tenias inicialmente.

Saludos.

Not applicable
Author

Si intente con esa opción, pero se cuando se activa subtotales en el campo cliente, cambia los orden de los años.

Not applicable
Author

Gracias por el archivo pero es lo mismo que tengo.

rubenmarin

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.

Not applicable
Author

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)

Tabla4.png

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.

Tabla5.png

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.

Tabla7.png

Tabla6.png

Muchas gracias por el tiempo.