Vai al contenuto principale Passa a contenuto complementare

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.

Nota informaticaIn alcuni casi in cui i dati non sono formattati correttamente, i campi vengono racchiusi da virgolette doppie, per assicurare che i dati siano interpretati correttamente. Questo può succedere, per esempio, quando il campo contiene caratteri come virgolette, virgole, spazi o interruzioni di riga.

Argomenti:  

Argomenti del comando Store
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:

  • assoluto

    Esempio: c:\data\sales.qvd

  • relativo alla directory di lavoro dell'app Qlik Sense.

    Esempio: data\sales.qvd

    Se il percorso viene omesso, Qlik Sense memorizza il file nella directory specificata dall'istruzione Directory. Se non è presente alcuna istruzione Directory, Qlik Sense memorizza il file nella directory di lavoro, C:\Users\{user}\Documents\Qlik\Sense\Apps.

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.

  • txt per i file CSV e TXT.

  • qvd per i file QVD.

  • parquet per i file Parquet.

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:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

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';

Nota informaticaAll'estensione file delle connessioni DataFiles si applica la distinzione tra maiuscole e minuscole. Ad esempio: .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.

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);

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 Parquet
Tag di controlloDualeTipo fisicoTipo logicoTipo convertito
$parquet-booleanNumeroBOOLEANNONENONE
$parquet-int32NumeroINT32NONENONE
$parquet-int64NumeroINT64NONENONE
$parquet-floatNumeroFLOATNONENONE
$parquet-doubleNumeroDOUBLENONENONE
$parquet-bytearrayStringaBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixNumeroFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalNumeroINT64DECIMALDECIMAL
$parquet-dateNumeroINT32DATEDATE
$parquet-timeNumeroINT64TIMETIME_MICROS
$parquet-timestampNumeroINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringStringaBYTE_ARRAYSTRINGUTF8
$parquet-enumStringaBYTE_ARRAYENUMENUM
$parquet-intervalNumeroFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonStringaBYTE_ARRAYJSONJSON
$parquet-bsonStringaBYTE_ARRAYBSONBSON
$parquet-uuidStringaFIXED_LEN_BYTE_ARRAYUUIDNONE

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.

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);

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!