Store
L'istruzione Store crea un file QVD, Parquet, CSV, o TXT.
Sintassi:
Store [ fieldlist from] table into filename [ format-spec ];
L'istruzione creerà un file con nome esplicito QVD, Parquet o un file di testo.
L'istruzione può esportare campi solo da una tabella dati. Se occorre esportare i campi da più tabelle, un'operazione join esplicita deve essere eseguita precedentemente nello script per la creazione della tabella dati da esportare.
I valori di testo sono esportati nel file CSV nel formato UTF-8. È possibile specificare un delimitatore, vedere LOAD. L'istruzione store associata a un file CSV non supporta l'esportazione BIFF.
Argomenti:
Argomento | Descrizione |
---|---|
fieldlist::= ( * | field) { , field } ) |
Un elenco dei campi da selezionare. L'utilizzo del carattere * per l'elenco dei campi indica tutti i campi. field::= fieldname [as aliasname ] fieldname è un testo che è identico al nome di campo in table. (Tenere presente che il nome di campo deve essere racchiuso da virgolette doppie diritte o parentesi quadre se, ad esempio, contiene spazi o altri caratteri non standard). aliasname è un nome alternativo per il campo da utilizzare nel file QVD o CSV risultante. |
table | Un'etichetta dello script che rappresenta una tabella già caricata da utilizzare come sorgente dei dati. |
filename |
Il nome del file di destinazione che include un percorso valido a una connessione dati della cartella esistente. Esempio: 'lib://Table Files/target.qvd' Nella modalità di creazione degli script legacy sono supportati anche i seguenti formati di percorso:
|
format-spec ::=( ( txt | qvd | parquet), la compressione è codec) |
È possibile imostare la specifica del formato per entrambi i formati file. Se si omette la specifica del formato, viene utilizzato qvd.
Se si utilizza parquet, è possibile anche impostare quale codec di compressione utilizzare con compression is. Se non si specifica il codec di compressione con compression is, viene utilizzato snappy. Sono disponibili le seguenti impostazioni di compressione:
Esempio: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
Esempi:
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';
Archiviazione nei file parquet
Parquet è un formato file fortemente tipizzato, in cui ogni campo contenente un singolo tipo di dati specifico (come ad esempio INT32, doppio, timestamp, o testo). Qlik Sense archivia i dati interni come doppi poco tipizzati, in cui i dati da sorgenti differenti possono essere mescolati negli stessi campi. Poiché nei file Parquet è possibile archiviare solo una parte dei doppi in ogni campo, è importante sapere cosa contiene ciascuno di essi. Per impostazione predefinita, Qlik Sense utilizza i campi per determinare come devono essere archiviati. Quando si archiviano dati nei file Parquet in un formato specifico, è necessario specificare qual è il tipo di dati dei campi al caricamento. Se si tenta di archiviare i dati in campi non compatibili in un file Parquet, come ad esempio dei numeri in un campo di testo o del testo in un campo timestamp, verranno generati valori null.
Quando si caricano dati che si desidera archiviare in Parquet, è possibile modificare il comportamento predefinito. È possibile formattarlo per modificare il tipo di dati o aggiungere tag per applicare forzatamente i tipi di colonna in Parquet.
Formattazione dei dati per l'archiviazione in Parquet
È possibile utilizzare le funzioni di formattazione di Qlik Sense per classificare i dati. Ad esempio, Text(), Num(), Interval() o Timestamp() possono applicare forzatamente i formati dati per l'archiviazione in Parquet. Qlik Sense può archiviare i dati in quasi 20 tipi di dati differenti, a seconda degli attributi del campo e dei tag di campo automatici. Per ulteriori informazioni, vedere Funzioni di interpretazione
Esempio: Formattazione dei dati con Num() e Text()
Nel seguente esempio viene descritta la preparazione dati per l'archiviazione in Parquet. Il valore Num() è applicato ai campi numerici, mentre Text() è applicato ai campo di testo e misti. Nel caso dei campi misti, Text() impedisce che vengano trattati come campi numerici in Parquet e che i valori di testo vengano modificati in null.
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);
Tagging dei dati per l'archiviazione in Parquet
È possibile applicare tag ai dati con i tag $parquet per forzare l'applicazione di tipi di colonne specifici durante l'archiviazione dei dati in Parquet. È possibile forzare ogni tipo di dati aggiungendo i corrispondenti tag di controllo. Per esempio, per archiviare un campo come INT32 in Parquet, aggiungere un tag utilizzando $parquet-int32 nello script di caricamento. A seconda del tipo di dati, verranno archiviate la stringa o la rappresentazione numerica dei dati doppi.
I seguenti tag di controllo Parquet possono essere utilizzati per taggare i campi per l'archiviazione nei file Parquet.
Tag di controllo | Duale | Tipo fisico | Tipo logico | Tipo convertito |
---|---|---|---|---|
$parquet-boolean | Numero | BOOLEAN | NONE | NONE |
$parquet-int32 | Numero | INT32 | NONE | NONE |
$parquet-int64 | Numero | INT64 | NONE | NONE |
$parquet-float | Numero | FLOAT | NONE | NONE |
$parquet-double | Numero | DOUBLE | NONE | NONE |
$parquet-bytearray | Stringa | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | Numero | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | Numero | INT64 | DECIMAL | DECIMAL |
$parquet-date | Numero | INT32 | DATE | DATE |
$parquet-time | Numero | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | Numero | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | Stringa | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | Stringa | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | Numero | FIXED_LEN_BYTE_ARRAY | INTERVAL | INTERVAL |
$parquet-json | Stringa | BYTE_ARRAY | JSON | JSON |
$parquet-bson | Stringa | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | Stringa | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Esempio: Tagging dei dati per l'archiviazione in Parquet
In questo esempio, vengono utilizzati due tag per definiree i dati per Parquet. Il campo num è taggato come $parquet-int32 per definirlo come campo numerico che verrà impostato come INT32 in Parquet.