Saltar al contenido principal Saltar al contenido complementario

Store

La sentencia Store crea un archivo QVD, Parquet, CSV o TXT.

Sintaxis:  

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

La sentencia creará un archivo denominado explícitamente QVD, Parquet o archivo de texto.

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 store a un CSV no admite exportación BIFF.

Nota informativaEn algunos casos, con datos que no están bien formados, los campos estarán entre comillas dobles para garantizar que los datos se interpreten correctamente. Esto puede suceder, por ejemplo, cuando el campo contiene caracteres como comillas, comas, espacios o saltos de línea.

Argumentos:  

Argumentos de la sentencia Store
Argumento Descripción
fieldlist::= ( * | field) { , field } )

Una lista de los campos que se van a seleccionar. Usar un asterisco * indica la totalidad de campos. 

field::= fieldname [as aliasname ]

fieldname es un texto que es idéntico a un nombre de campo en table. (Tenga en cuenta que el nombre de campo debe ir entre comillas dobles rectas o corchetes si contiene por ejemplo espacios u otros caracteres no estándar.)

aliasname es un nombre alternativo para el campo que se utilizará en el archivo QVD o CSV resultante.

table Es una tabla etiquetada en el script, ya cargada, que se usará como fuente de datos.
filename

El nombre del archivo destino, incluyendo una ruta válida a una conexión de datos de carpetas.

Ejemplo: 'lib://Table Files/target.qvd'

En el modo de elaboración de scripts de legado, se admiten también los diguientes formatos de ruta:

  • Absoluta

    Ejemplo: c:\data\sales.qvd

  • relativa al directorio de trabajo de la app Qlik Sense.

    Ejemplo: data\sales.qvd

    Si se omite la ruta, Qlik Sense almacena el archivo en el directorio especificado por la sentencia Directory. Si no hay sentencia Directory, Qlik Sense almacena el archivo en el directorio de trabajo, C:\Users\{user}\Documents\Qlik\Sense\Apps.

format-spec ::=( ( txt | qvd | parquet), compression is codec)

Puede establecer la especificación de formato en cualquiera de estos formatos de archivo. Si se omite la especificación de formato, se asume qvd.

  • txt para archivos CSV y TXT.

  • qvd para archivos QVD.

  • parquet para archivos Parquet.

Si utiliza parquet, también puede establecer qué códec de compresión usar con compression is. Si no especifica el códec de compresión con compresión con compression is, se utiliza snappy. Están disponibles las siguientes opciones de compresión:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

Ejemplo:

Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4);

Ejemplos:

Store mytable into xyz.qvd (qvd);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

Store Name, RegNo from mytable into xyz.qvd;

Store Name as a, RegNo as b from mytable into 'lib://FolderConnection/myfile.qvd';

Store mytable into myfile.txt (txt);

Store mytable into myfile.parquet (parquet);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

Nota informativaLa extensión de archivo de las conexiones de DataFiles distingue entre mayúsculas y minúsculas. Por ejemplo: .qvd.

Almacenamiento en archivos parquet

Parquet es un formato de archivo fuertemente tipado, en el que cada campo contiene un único tipo específico de datos (como in32, double, timestamp o text). Qlik Sense almacena datos internos como un dual escrito libremente, donde los datos de diferentes fuentes se pueden mezclar en los mismos campos. Como solo se puede almacenar una parte del dual en cada campo de Parquet, es importante saber qué contiene cada campo. De forma predeterminada, Qlik Sense utiliza el tipo de campo para determinar cómo se debe almacenar el campo. Al almacenar datos en archivos Parquet en un formato específico, debe especificar qué tipo de datos son sus campos al cargarlos. Si trata de almacenar datos en campos incompatibles en un archivo Parquet, como números en un campo de texto o texto en un campo de marca de tiempo, terminará con valores nulos.

Al cargar datos que desea almacenar en Parquet, es posible cambiar el comportamiento predeterminado. Puede darles formato para cambiar su tipo de datos, o bien etiquetarlos para obligar a unos tipos de columnas específicos en Parquet.

Formateado de datos para almacenamiento en Parquet

Puede utilizar las funciones de formato de Qlik Sense para clasificar sus datos. Por ejemplo, Text(), Num(), Interval() o Timestamp() pueden aplicar formatos de datos al almacenar datos en Parquet. Qlik Sense puede almacenar datos en casi 20 tipos de datos según los atributos de campo y las etiquetas de campo automáticas. Para más información, vea Funciones de interpretación.

Ejemplo: Formateado de datos con Num() y Text()

El ejemplo siguiente demuestra la preparación de datos para su almacenamiento en Parquet. Num() se aplica al campo numérico. Text() se aplica tanto a texto como a mixto. En el caso de formato mixto, Text() evita que se trate como un campo numérico en Parquet y que los valores de texto se cambien a valores nulos.

Data: LOAD * INLINE [ num, text, mixed 123.321, abc, 123 456.654, def, xyz 789.987, ghi, 321 ]; Format:
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);

Etiquetado de datos para almacenamiento en Parquet

Puede etiquetar sus datos con etiquetas $parquet para obligar a tener unos tipos de columnas específicos al almacenar datos en Parquet. Cada tipo de datos se puede aplicar agregando la etiqueta de control correspondiente. Por ejemplo, para almacenar un campo como INT32 en Parquet, etiquételo con $parquet-int32 en el script de carga. Dependiendo del tipo de datos, se almacenará la cadena o la representación numérica de los datos duales.

Las siguientes etiquetas de control de Parquet se pueden utilizar para etiquetar campos con el fin de almacenarlos en archivos Parquet.

Etiquetas de control de Parquet
Etiqueta de controlDualTipo físicoTipo lógicoTipo convertido
$parquet-booleanNúmeroBOOLEANNONENONE
$parquet-int32NúmeroINT32NONENONE
$parquet-int64NúmeroINT64NONENONE
$parquet-floatNúmeroFLOATNONENONE
$parquet-doubleNúmeroDOUBLENONENONE
$parquet-bytearrayCadenaBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixNúmeroFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalNúmeroINT64DECIMALDECIMAL
$parquet-dateNúmeroINT32DATEDATE
$parquet-timeNúmeroINT64TIMETIME_MICROS
$parquet-timestampNúmeroINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringCadenaBYTE_ARRAYSTRINGUTF8
$parquet-enumCadenaBYTE_ARRAYENUMENUM
$parquet-intervalNúmeroFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonCadenaBYTE_ARRAYJSONJSON
$parquet-bsonCadenaBYTE_ARRAYBSONBSON
$parquet-uuidCadenaFIXED_LEN_BYTE_ARRAYUUIDNONE

Ejemplo: Etiquetado de datos para almacenamiento en Parquet

En este ejemplo, se utilizan dos etiquetas para definir los datos de Parquet. El campo num va etiquetado con $parquet-int32 para definirlo como un campo numérico que se establecerá como INT32 en Parquet.

Data: LOAD * INLINE [ num, text, 123.321, abc 456.654, def 789.987, ghi ]; TAG num WITH '$parquet-int32'; STORE Data INTO [lib://DataFiles/Tmp.parquet] (parquet);

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.