Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Save $600 on Qlik Connect registration! Sign up by Dec. 6 to get an extra $100 off with code CYBERSAVE: REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
rulohx87
Contributor III
Contributor III

Análisis vectorial por fila y no por columna en una tabla

¡Hola amigos!


En base la tabla quiero obtener los lugares de los vendedores para cada ciudad. "Es un análisis vectorial por fila y no por columna".

Lo que lleva hacer comparaciones entre los campos como el código de abajo. Ahora este análisis es tan solo con 4 variables y 5 registros. imaginen con 10 y 1000 registros. ¿Como serán las comparaciones con IF?.


Escenario
Duda Lugares.png

MI PROPUESTA


Este es un método hecho en JAVA llamado ordenamiento de la burbuja utilizando vectores bidimencionales para hacer los comparativos y los ordena del menor al mayor para N registros.

 { \color{Sepia} procedimiento } \; { \color{BlueViolet} DeLaBurbuja3 } \; ( { \color{Black} a_{(0)}, a_{(1)}, a_{(2)}, \ldots, a_{(n-1)}} )

 { \color{Black} i } \; { \color{BlueViolet} \gets } \; { \color{Black} 1} \;
 { \color{Sepia} \mathit{ repetir }}
 { \color{Black} i } \; { \color{BlueViolet} \gets } \; { \color{Black} i + 1} \;
 { \color{Black} ordenado } \; { \color{BlueViolet} \gets } \; { \color{Black} si} \;
 { \color{Sepia} \mathit{ para }} \; { \color{Black} \mathit{ j}} \; { \color{BlueViolet} \mathit{ \gets }} \; { \color{Black} \mathit{ 0}} \; { \color{Sepia} \mathit{ hasta }} \; { \color{Black} \mathit{ n-i}} \; { \color{Sepia} \mathit{ hacer }}
 { \color{Sepia}      \mathit{ si }} \; { \color{Black} a_{(j)} } \; { \color{BlueViolet} > } \; { \color{Black} a_{(j+1)}} \; { \color{Sepia}      \mathit{ entonces }}
 { \color{Black} ordenado } \; { \color{BlueViolet} \gets } \; { \color{Black} no} \;
 { \color{Black} aux } \; { \color{BlueViolet} \gets } \; { \color{Black} a_{(j)} } \;
 { \color{Black} a_{(j)} } \; { \color{BlueViolet} \gets } \; { \color{Black} a_{(j+1)}} \;
 { \color{Black} a_{(j+1)} } \; { \color{BlueViolet} \gets } \; { \color{Black} aux } \;
 { \color{Sepia}       \mathit{ fin \; si }}
 { \color{Sepia} \mathit{ fin \; para }}
 { \color{Sepia}      \mathit{ hasta \; que }} \; { \color{Black} \mathit{ \neg (i < n) \; \or \; (ordenado = si)}}

 { \color{Sepia} \mathit{ fin \; procedimiento }}

¿Como puedo hacer esto en QlikView en base a esta lógica?

¿IDEAS?


PD. Lo que quiero es hacer mi código con los IF más simple y pequeño.

5 Replies
jolivares
Specialist
Specialist

y como quisieras mostrar tus valores, seria bueno que especifiques una tabla de como quieres verlos.

jolivares
Specialist
Specialist

Podria ser de esta manera?

Capture.PNG.png

sebastiandperei
Specialist
Specialist

Hola Raúl.

No entiendo muy bien qué es lo que necesitás, pero si necesitás mostrar un ranking de, supongamos, ventas de vendedores para cada ciudad, esto te puede servir.

Para empezar, necesitás pasar los valores de cada vendedor a un campo. Complica las cosas si están en campos separados. Esto lo hacés con Crosstable (ver adjunto)

Otro punto es que la tabla pivotante (como muestra el colega en el mensaje anterior) no cambia el orden interno de las dimensiones. O sea, si para DF Tenés primero a Andrés, pero está Último para Tlaxcala, el ordenamiento será incierto.

Para terminar, en el adjunto se muestra una tabla que te da un ranking de los vendedores para cada ciudad, usando la función Rank. Si seleccionás una CIUDAD (y sólo si seleccionás una CIUDAD, por lo anterior), te los va a mostrar ordenados.

Si no te sirve, vas a tener que mandar un ejemplo de cómo lo querés ver. Saludos!!

rulohx87
Contributor III
Contributor III
Author

Gracias por la respuesta es muy útil. Ahora lo que no especifique es como lo quiero ver. Digamos que tenemos la siguiente tabla.

TipoV1V2V3V4V5V6V7
Argentina20307047216898
México50196493527154
España802419202010010
Colombia10901040703160

Quiero determinar: El primer lugar, segundo lugar, tercero y penúltimo en cada ciudad por ejemplo:

     Para la ciudad de Argentina así quedaría:

               Primero:     V7

               Segundo:    V3

               Tercero:      V6

               Penúltimo:  V5

Ahora bien quiero mostrarlo así. Como se darán cuenta la imagen es dinámica y cambia con cada nuevo valor.

ej.png

rulohx87
Contributor III
Contributor III
Author

Hey Gracias por la respuesta. Si que es bueno el ejemplo y creo que esto ya lo había hecho... El punto es que tengo 1526 comparaciones con sentencias IF para hacer el cambio dinámico del objeto de imagen tan solo para el segundo lugar y es muy tedioso. Quería saber si por ejemplo puedo obtener esto con una función:

Primer lugar:            Campo_4 -> imagen.jpg

Segundo lugar:         Campo_1 -> imagen.jpg

Tercer lugar:             Campo_6 -> imagen.jpg

No sé había pensado en un algoritmo como la "burbuja" primero para ordenar por ¿Quien vendió más? en cada ciudad al hacerle clic (1,2,3,4,5,6,7). Ya nada más tomaría por ejemplo los primeros 3 y les diría si es el primero pon... "Pon tal imagen".