Recorrer fila a fila una tabla I: Tabla desaparecida !

Esta es la primera parte de una serie de posts donde voy a explicar como recorrer una tabla usando cortes de control para totalizar por días y otros conceptos y a lo largo de estos pasos revisar algunos errores y situaciones comunes que pueden suceder haciéndonos perder valioso tiempo tratando de entender que está pasando.

Supongamos que deseamos armar un cashflow que nos muestre día a día el total de ingresos, total de egresos y el saldo de la caja (ingresos – egresos) y dicho saldo sea el monto inicial para el día siguiente:

Saldo Día( X )  =    Ingresos Día( X ) – Egresos Día( X ) + Saldo Día ( X-1)

Ahora bien, los datos nos llegan exportados desde algún sistema en forma de una planilla excel (podría ser una tabla SQL o cualquier otra fuente de datos válida para QlikView), con la siguiente estructura:

Como verán los datos están temporalmente desordenados, y nosotros los queremos ordenar porque más adelante vamos a recorrer la tabla fila por fila para calcular el saldo día por día.

Para esto vamos a usar el asistente de QlikView para leer ficheros planos ubicado en el editor del script:

Buscamos el archivo XLS con los datos (recomiendo chequear “Rutas Relativas” para hacer mas portable el código) y en el primer paso del asistente damos finalizar, ya que los pasos siguientes no nos interesan:


Esto nos genera el siguiente código de script:

Tesoreria:
LOAD Fecha,
     Cuenta,
     Tipo,
     Monto
FROM
Tesoreria.xls
(biff, embedded labels, table is Hoja1$);

y al correr el script obtenemos la siguiente tabla cargada en el modelo:

Para poder recorrer la tabla y calcular nuestros totales por cada día la misma debe estar ordenada por el campo Fecha en forma ascendente para que al detectar un cambio de día podamos guardar el saldo.

Para esto es necesario volver a cargar la tabla desde memoria (Load Resident) haciendo un Order By ….

Tesoreria_Ordenada:
LOAD *
RESIDENT Tesoreria
ORDER By Fecha;

Ejecutamos y entramos al modelo para ver como quedó nuestra tabla “Tesoreria_Ordenada”:

Pero ¿Donde está la tabla “Tesoreria_Ordenada” ? El script corrió bien sin reportar ningún error pero la tabla NO ESTÁ !!??

Si pasamos el puntero del mouse sobre el título de la tabla veremos que ahora tenemos un total de 24 filas en lugar de las 12 que había anteriormente y es aquí donde está nuestra segunda tabla “dentro” de la primera.

Cuando QlikView encuentra dos o más tablas que tienen los mismos nombres de campos las va a concatenar (peegar las filas de una debajo de la otra, “UNION” en términos de SQL) , aunque nosotros le hayamos dado diferentes nombres a las tablas.

Para evitar que QV haga esto debemos usar un modificador del Load que es “NOCONCATENETE” y además deberíamos borrar la primera tabla ya que en realidad es solo un paso de nuestra transformación de datos.

Aquí el script completo:

Tesoreria:
LOAD Fecha,
     Cuenta,
     Tipo,
     Monto
FROM
Tesoreria.xls
(biff, embedded labels, table is Hoja1$);

Tesoreria_Ordenada:
NOCONCATENATE LOAD *
RESIDENT Tesoreria
ORDER By Fecha;

Drop Table Tesoreria;

Cuando estamos trabajando con scripts complejos y extensos con muchos pasos es fácil “perder” tablas debido a esta característica de QV de concatenar automáticamente.

Espero les sirva y hasta la próxima!

Acerca de pparnisari
Casi 44 vueltas al sol. Licenciado en sistemas. Curioso, investigador, excelente para resolver problemas prácticos. Casado, 2 hijos, cada vez con mas preguntas y respuestas mas en duda. Almost 44 laps to the sun. System engineer. Curious, researcher, great for solving practical problems. Married, 2 children, each time with more questions and more answers in doubt.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: