martes, 7 de julio de 2009

Archivo QVD - Qlikview

Los archivos QVD son archivos que almacenan datos que pueden ser de diferentes fuentes de datos, diferentes BD, archivos planos TXT, archivos Excel, etc.

Porqué utilizar archivos qvd?

-Son una forma de optimizar el tiempo de carga de los datos
-Permiten carga incremental
-Son recomendados por Qlikview (será una razón válida?)
-etc, ya se me ocurrirán

Cómo crear un archivo qvd?

en nuestro scrip :


//Nombre que le asignamos a la tabla
Nombre_Tabla:
//Permite carga desde la base de datos, permite las mismas intrucciones que se puedes
//realizar en la BD, notar que Antecede la palabra SQL antes de nuestro Select común
SQL SELECT *
FROM Nombe_Tabla_BD;

//Permite guardar la tabla antes cargada, notar que se debe indicar el nombre de la
//tabla que le asignamos a la tabla y no el nombre que tiene en la BD
STORE Nombre_Tabla
INTO Nombre_Archivo_QVD.qvd;
//es posible indicarle un directorio a esta ruta
//por ejemplo guardar en la carpeta ArchivosQVD
//INTO ArchivosQVD\Nombre_Archivo_QVD.qvd;


-La primer instrucción permite obtener datos desde nuestra Base de Datos
-La segunda guardar la tabla obtenida en un archivo QVD Nombre_Archivo_QVD.qvd

Como podemos invocar nuestro archivo QVD generado?

Desde cualquier aplicacion QVW podemos invocar desde nuestro Script de la siguiente froma:


Nombre_Tabla:
LOAD *
FROM Nombre_Archivo_QVD.qvd (QVD);


Notar que podemos volver a cambiar el nombre de la tabla asignado en nuestra nueva aplicacion QVW

Pero qué son realmente los archivo QVD?

Son archivos que en su estructura interna mantinene la forma de un archivo XML


<qvdtableheader>
<qvbuildno>#numero#</qvbuildno>
<creatordoc></creatordoc>
<createutctime>#fecha#</createutctime>
<sourcecreateutctime></sourcecreateutctime>
<sourcefileutctime></sourcefileutctime>
<sourcefilesize>-1</sourcefilesize>
<staleutctime></staleutctime>
<tablename>#nombre qvd#</tablename>
<fields>
<qvdfieldheader>
<fieldname>#titulo columna 1#</fieldname>
<bitoffset>#?#</bitoffset>
<bitwidth>#?#</bitwidth>
<bias>#?#</bias>
<numberformat>
<type>#Tipo#</type>
<ndec>#?#</ndec>
<usethou>#?#</usethou>
<fmt>#formato#</fmt>
<dec>,</dec>
<thou></thou>
</numberformat>
<noofsymbols>#numero de simbolo ?#</noofsymbols>
<offset>#?#</offset>
<length>#largo#</length>
</qvdfieldheader>

....
...
..
.
ETC




Pero si son archivos Qvd generados y mantiene la info en su interior,No tendremos la información actualizada?

Es uno de los inconvenientes de esta forma de utilizar los datos en nuestras aplicaciones.

Posible solución para tener datos(Archivos QVD) actualizados?

Solucion 1:
Crear una tarea programada en windows que nos actualice los datos, extrayendo automaticamente los datos de la Base de Datos a nuestro archivos QVD sin nuestra intervención por ejemplo todos los días en la mañana, para que todos los días podamos usar los datos completos al día de ayer.

Solucion 2:
Actualizar manualmente los archivos QVD, podremos usar los datos actulizados recientemente, pero si nuestros datos es una base de datos muy grande o se manejan instrucciones sobre funciones, vistas, procedimientos almacenados, triggers, u otra, nuestra carga puede tardar mucho tiempo (horas).