Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
mepa8011
Contributor III
Contributor III

ordenar por nivel en una tabla pivote

tengo un problema con un reporte, tengouna tabla pivoteante, pero con 3 dimensiones o niveles.

ejemplo

GRUPO

GRUPOCORPORATIVOTOTALVENTA
GRUPO ACORPORATIVO 1100
CORPORATIVO 2200
GRUPO BCORPORATIVO3500
CORPORATIVO 1200

En este caso las filas están indetadas, asi es que abro el primer nivel y y el total de venta no me lo ordena como yo quiero que es de forma descendente. como le puedo hacer o que expresión puedo usar para que me ordene de acuerdo a su nivel, ya utilice el Aggr(sum(totalventa), corporativo)

y el rank pero me siguehaciendo lo mismo.

23 Replies
luismadriz
Specialist
Specialist

No te rindas,

Si son 3 niveles entonces el calculo cambia y debes asignar en valor dual a cada nivel

Crees que puedas enviarme una hoja de Excel con datos o el QVF para yo intentarlo?

Luis

mepa8011
Contributor III
Contributor III
Author

donde te podré mandar el excel?

rubenmarin

Hola Maria, la opción que dice Luis debería funcionar, Qlikview ordena valores de campo, por lo que si asigna a CORPORATIVO1 el orden 1, va a ser el orden 1 en todos los grupos, para evitar esto se asigna un identificador único a cada combinación para permitir a Qlik asignar el orden por separado a cada combinación.

Yo prefiero usar RowNO(TOTAL) para evitar que si 2 combinaciones tienen el mismo total se puede crear una discrepancia al calcular las medidas, de esta forma a cada combinación le asigna un "código" distinto:

2ª dimension: AGGR(DUAL(Nombre2aDimension,RowNo(TOTAL)),Nombre1aDimension,Nombre2aDimension)

3ª dimension:  AGGR(DUAL(Nombre3aDimension,RowNo(TOTAL)),Nombre1aDimension,Nombre2aDimension,Nombre3aDimension)

Al hacerlo así el orden numérico no sería el orden por ventas por lo que hay que ordenar por expresión, a partir de la 2ª dimension el orden sería con la expresión:

SUM(TOTALVENTA)

luismadriz
Specialist
Specialist

A la dirección hotmail en mi perfil. Avísame si no la puedes ver. Saludos. Luis

luismadriz
Specialist
Specialist

Hola Maria,

Nunca recibi tu email con la data, lo enviaste?

Por fa avisame,

Saludos,

Luis

mepa8011
Contributor III
Contributor III
Author

pero esto no es por el mismo total, tiene que ver algo con la suma total en todos los niveles, de hecho el rowno no se como lo pudiera ayudar, digo por que al parecer necesito tener un ordinal para esto en la carga y no estoy manejando el orden al cargar los datos.

mepa8011
Contributor III
Contributor III
Author

hola luis, te lo acabo de enviar. saludos

luismadriz
Specialist
Specialist

Listo,

El metodo Dual no funciono como dijiste! El segundo nivel se repetia en ambos grupos lo que hacia que arrojara cosas extranas...

Al final lo logre hacer con AGGR y sin AGGR pero con la condicion que el segundo nivel (Corporativo) tuviera parte del primero nivel (Grupo) or algo que lo hiciera unico como un ID... De verdad es extrano!

Te envio el qvf por email para que lo revises.

Untitled.png

Untitled2.png

Para los clientes que tienen el mismo nivel de PAX, no pude ordenarlos alfabeticamente... algo que al parecer el posible con las ultimas actualizaciones de la function AGGR... posiblemente cree un post en la comunidad para seguir entendiendo esto

Saludos,

Luis

PS

rubenmarin

hector.munoz.innova

Me gustaria enviarles el qvf a ustedes tambien si estan de animo. Quisiera tener sus opiniones y terminar de entender lo que esta pasando. Creo que deberian poder ver mi direccion de correo en mi perfil

Saludos,

Luis

rubenmarin

Hola Maria, ¿has llegado a probarlo? el rowno() es solo para asignar un código distinto a cada combinación, el orden lo tiene que hacer por la expresión Sum(TOTALVENTA)

luismadriz
Specialist
Specialist

Ok, recien creo que comienzo a entender lo que Ruben dice sobre usar RowNo(TOTAL) para hacer que la dimension sea unica.

En cada Dimension, he usado lo siguiente y parece dar el resultado correcto:

Nivel 1 Grupo

=AGGR(DUAL(Grupo,RowNo(TOTAL)),Grupo)

o tambien

=DUAL(Grupo,AGGR(RowNo(TOTAL),Grupo))


Nivel 2 Corporativo

=AGGR(DUAL(Corporativo,RowNo(TOTAL)),Grupo,Corporativo)

o tambien

=DUAL(Corporativo,AGGR(RowNo(TOTAL)),Grupo,Corporativo)

Nivel 3 Cliente

=AGGR(DUAL(Cliente,RowNo(TOTAL)),Grupo,Corporativo,Cliente)

o tambien

=DUAL(Cliente,AGGR(RowNo(TOTAL)),Grupo,Corporativo,Cliente)


y luego ordenar cada una por expresion Sum(Measure)


Otra cosita: Al parecer cuando se ordena "por expresion" y tambien se ordena Alfabeticamente, Alfabeticamente toma la segunda prioridad y ordena alfabeticamente las dimensiones que tengan el mismo valor!!!


Este ha sido un excelente aprendizaje para mi, gracias!


Por favor Maria dejanos saber como te esta yendo,


Saludos desde Australia


Luis