Saltar al contenido principal
Archivos QVD. #Archivos QVD.

EN ESTA PÁGINA

Archivos QVD.

Un archivo QVD (QlikView Data) es un archivo que contiene una tabla de datos exportados desde Qlik Sense o QlikView. QVD es un formato nativo de Qlik y solo pueden leerlo y escribirlo Qlik Sense o QlikView. El formato de archivo está optimizado para mejorar la velocidad de lectura de datos desde un script Qlik Sense, pero es al mismo tiempo muy compacto. Leer datos desde un archivo QVD es por lo general 10-100 veces más rápido que leer de otras fuentes de datos.

Los archivos QVD se puede leer en dos modos: estándar (rápido) y optimizado (más rápido). El modo seleccionado lo determina de forma automática el motor de script de Qlik Sense. El modo optimizado puede emplearse solo cuando todos los campos cargados o un subconjunto de ellos sean leídos sin ninguna transformación (sin fórmulas que actúen sobre los campos), aunque sí se permite el renombrado de campos. Una cláusula Where que hace que Qlik Sense descomprima los registros también desactivará la carga optimizada.

Un archivo QVD contiene exactamente una tabla de datos y consta de tres partes:

  • Una cabecera XML (con juego de caracteres UTF-8) que describe los campos de la tabla, el diseño de la información subsiguiente y algunos otros metadatos.
  • Tablas de símbolos en un formato de bytes.
  • Datos reales de la tabla en formato de bits.

Los archivos QVD se pueden usar con muchos fines. Podemos identificar claramente al menos cuatro usos fundamentales. En muchos casos se pueden aplicar dos o más de ellos al mismo tiempo.

  • Incremento de la velocidad de carga de datos
  • Al almacenar en búfer los bloques de datos de entrada que no cambian o que cambian lentamente en los archivos QVD, la ejecución de script se vuelve considerablemente más rápida para los grandes conjuntos de datos.

  • Reducción de la carga en los servidores de las bases de datos
  • Mediante el envío a buffers de las partes que no cambian, o cambian muy lentamente, de los datos de entrada de archivos QVD, podemos reducir enormemente la cantidad de datos obtenidos de fuentes de datos externas. Esto alivia la carga de las bases de datos externas y reduce el tráfico de la red. Además, cuando varios scripts de Qlik Sense comparten los mismos datos, solo es necesario cargarlo una vez desde la base de datos de origen en un archivo QVD. Las otras apps pueden hacer uso de los mismos datos a través de este archivo QVD.

  • Consolidar datos de múltiples aplicaciones Qlik Sense
  • Con la sentencia de script Binary, se pueden cargar datos desde una sola aplicación Qlik Sense a otra, pero con los archivos QVD, un script de Qlik Sense puede combinar datos de cualquier cantidad de aplicaciones Qlik Sense. Esto abre todo un mundo de posibilidades, por ejemplo para aplicaciones que deseen consolidar datos similares procedentes de diversas unidades de negocio, etc.

  • Carga incremental
  • En muchos casos habituales, la funcionalidad del QVD puede usarse para la carga incremental, de modo que solo se carguen los registros nuevos de una base de datos en aumento.

Crear archivos QVD

Un archivo QVD se puede crear de dos maneras:

  • Mediante la creación explícita y su nombrado mediante el comando Store en el script de Qlik Sense.
  • Indique simplemente en el script que desea exportar una tabla anteriormente leída, o parte de ella, a un nombre de archivo explícito, en una ubicación de su elección.

  • Mediante creación y mantenimiento automáticos desde el script.
  • Mediante la colocación del prefijo Buffer delante de una sentencia de carga o selección, Qlik Sense creará automáticamente un archivo QVD, que, bajo ciertas condiciones, se puede utilizar en lugar de la fuente de datos original al volver a cargar los datos.

No hay diferencia entre los archivos QVD resultantes en cuanto a la velocidad de lectura.

Store

Esta función de script crea un nombre explícitamente denominado QVD, CSV o archivo txt.

Sintaxis:  

Store[ *fieldlist from] table into filename [ format-spec ];

La sentencia solo puede exportar campos desde una tabla de datos. Si tuviéramos que exportar campos de varias tablas, debemos hacer previamente un join explícito en el script para crear la tabla de datos que se ha de exportar.

Los valores de texto se exportan al archivo CSV en formato UTF-8. Se puede especificar un delimitador, vea LOAD. La sentencia de almacenamiento a un archivo CSV no admite exportación BIFF .

Store mytable into [lib://DataFiles/xyz.qvd]; Store * from mytable into [lib://DataFiles/xyz.qvd]; Store myfield from mytable into [lib://DataFiles/xyz.qvd]; Store myfield as renamedfield, myfield2 as renamedfield2 from mytable into [lib://DataFiles/xyz.qvd]; Store mytable into [lib://DataFiles/myfile1.txt]; Store mytable into [lib://DataFiles/myfile2.csv];

  1. Abra la app Tutorial de script avanzado.
  2. Haga clic en la sección de script Product.
  3. Agregue lo siguiente al final del script:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Su script debería tener el aspecto siguiente:

    CrossTable(Month, Sales) LOAD     Product,     "Jan 2014",     "Feb 2014",     "Mar 2014",     "Apr 2014",     "May 2014" FROM [lib://DataFiles/Product.xlsx]  (ooxml, embedded labels, table is Product);  Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

  5. Haga clic en Cargar datos.
  6. Ahora, el archivo Product.qvd debería estar en la lista de archivos.

    Este archivo de datos, que es el resultado del script de Crosstable, es una tabla de tres columnas, una por cada categoría (Product, Month, Sales). Ahora, este archivo de datos se puede utilizar para sustituir toda la sección de script Product .

Leer datos desde archivos QVD

Un archivo QVD se puede leer o está accesible a Qlik Sense mediante los siguientes métodos:

  • Cargar un archivo QVD como una fuente de datos explícita. Los archivos QVD se pueden referenciar mediante una sentencia load en el script de Qlik Sense, igual que cualquier otro tipo de archivos de texto (csv, fix, dif, biff, etc.).
  • LOAD * from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1, fieldname2 from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1 as newfieldname1, fieldname2 as newfieldname2 from [lib://DataFiles/xyz.qvd](qvd);
  • Carga automática de archivos QVD almacenados en el búfer. Cuando se utiliza el prefijo buffer en sentencias load o select, no se necesitan sentencias explícitas para la lectura. Qlik Sense determinará en qué medida utilizará los datos del archivo QVD en lugar de adquirir los datos utilizando la sentencia LOAD o SELECT original.
  • Acceder a archivos QVD desde el script. Se pueden usar varias funciones de script (todas ellas comenzando por QVD) para recuperar información diversa sobre los datos encontrados en la cabecera XML de un archivo QVD.

  1. Comente todo el script completo en la sección de script Product.
  2. Introduzca el siguiente script:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd);			

  4. Haga clic en Cargar datos.
  5. Los datos se cargan desde el archivo QVD.

    Ventana de progreso de la carga de datos

    Ventana de progreso de la carga de datos.
Nota informativaPara obtener información sobre el uso de archivos QVD para cargas incrementales, vea esta publicación de blog en Qlik Community: Vista general de la carga incremental de Qlik

Buffer

Los archivos QVD se pueden crear y mantener automáticamente a través del prefijo Buffer. Este prefijo se puede utilizar en la mayoría de las sentencias LOAD y SELECT de scripts. Indica que los archivos QVD se utilizan para almacenar en caché/búfer el resultado de la sentencia.

Sintaxis:  

Buffer [ (option [ , option])] ( loadstatement | selectstatement ) option::= incremental | stale [after] amount [(days | hours)]

Si no se utiliza ninguna opción, el búfer de QVD que crea la primera ejecución del script se utilizará de forma indefinida.

Ejemplo:  

Buffer load * from MyTable;

stale [after] amount [(days | hours)]

Amount es un número que especifica el período de tiempo. Se pueden utilizar Decimals. Si se omite la unidad se interpreta como days.

La opción de stale after se utiliza normalmente con fuentes de bases de datos donde no hay ninguna fecha-hora sencilla en los datos originales. La cláusula stale after simplemente establece un período de tiempo a partir de la hora de creación del búfer de QVD, tras el cual se dejará de considerar válido. Antes de esa hora, el búfer de QVD se utilizará como origen de los datos, tras lo cual se utilizará el origen de datos. El archivo del búfer de QVD se actualizará automáticamente y se iniciará un nuevo período.

Ejemplo:  

Buffer (stale after 7 days) load * from MyTable;

Incremental

La opción de incremental activa la capacidad de leer solo parte de un archivo subyacente. El tamaño anterior del archivo se almacena en el encabezado XML en el archivo QVD. Esto resulta de especial utilidad con archivos de registro. Todos los registros cargados en alguna ocasión anterior se leen desde el archivo de QVD, mientras que los registros nuevos siguientes se leen desde el origen original y, por último, se crea un archivo de QVD actualizado.

Tenga en cuenta que la opción de carga incremental solo se puede usar con sentencias LOAD y archivos de texto y que la carga incremental no se puede usar allí donde los datos antiguos se cambien o se eliminen.

Ejemplo:  

Buffer (incremental) load * from MyLog.log;

Los búfers de QVD se quitarán normalmente cuando ya no se mencionen en ninguna parte a lo largo de una ejecución completa del script de la app que lo ha creado o cuando la app que lo ha creado ya no exista. Debe utilizar la sentencia Store si desea conservar el contenido del búfer como un QVD o un archivo CSV.

  1. Cree una nueva app y asígnele un nombre.
  2. Agregue una nueva sección de script en el Editor de carga de datos.
  3. En DataFiles en el menú a la derecha, haga clic en Seleccionar datos.

  4. Cargue y después seleccione Cutlery.xlsx.
  5. En la ventana Seleccionar datos de, haga clic en Insertar script.
  6. Comente los campos de la sentencia load y cambie la sentencia load a lo siguiente:
  7. Buffer LOAD *

    Su script debería tener el aspecto siguiente:

    Buffer LOAD * //     "date", //     item, //     quantity FROM [lib://DataFiles/Cutlery.xlsx] (ooxml, embedded labels, table is Sheet1);

  8. Haga clic en Cargar datos.
  9. La primera vez que cargue datos, estos se cargan desde Cutlery.xlsx.

    Ventana de progreso de la carga de datos

    Ventana de progreso de la carga de datos.

    La sentencia Buffer también crea un archivo QVD y lo almacena en Qlik Sense. En una implementación en la nube, se almacena en un directorio en la nube.

  10. Haga clic en Cargar datos de nuevo.
  11. Esta vez los datos se cargan desde el archivo QVD creado por la sentencia Buffer cuando cargó los datos por primera vez.
  12. Ventana de progreso de la carga de datos

    Ventana de progreso de la carga de datos.

¡Muchas gracias!

Ha completado este tutorial, ahora ya posee los conocimientos básicos para crear scripts en Qlik Sense. Por favor, visite nuestro sitio web si desea más información sobre otra formación disponible.