Vai al contenuto principale Passa a contenuto complementare

Utilizzo dei file Apache Parquet

Apache Parquet è un formato di archiviazione a colonne, molto efficiente per archiviare e interrogare grandi set di dati. In Qlik Sense è possibile leggere dati da file Parquet e archiviare tabelle sotto forma di file Parquet.

Parquet consente di interrogare efficacemente colonne specifiche in una tabella, anziché leggere l'intera tabella. Ciò lo rende ideale per l'elaborazione di big data. Inoltre, Parquet consente di comprimere e codificare efficacemente i dati. Ciò può ridurre ulteriormente lo spazio di archiviazione e migliorare le prestazioni dell'interrogazione.

Creazione di file Parquetome dividere

È possibile creare file Parquet utilizzando il comando Store nello script. Dichiarare nello script che si desidera esportare una tabella letta in precedenza, o una sua parte, in un file con un nome esplicito nella posizione desiderata. È possibile annidare i dati nei dati archiviati nei file Parquet.

Per ulteriori informazioni, vedere Store.

Lettura dei dati dai file Parquet

È possibile leggere dati da un file Parquet così come si leggono da qualsiasi altro file di dati supportato da Qlik Sense. Ciò include Gestione dati, Editor caricamento dati o quando si aggiungono dati a una nuova app.

Per ulteriori informazioni, vedere Caricamento di dati da file.

È inoltre possibile caricare dati da un file Parquet nello script di caricamento dei dati con il comando LOAD. Ad esempio:

LOAD * from [lib://DataFiles/xyz.parquet] (parquet);

Per ulteriori informazioni, vedere Load.

Caricamento di dati da file Parquet annidati

Se un file Parquet contiene dati annidati, deve essere caricato in più istruzioni LOAD, ognuna delle quali deve specificare il sottogruppo da caricare in ogni tabella. L'identificatore Table is è utilizzato per dimostrare un percorso al nodo del gruppo nello schema da caricare.

È possibile utilizzare l'identificatore Il delimitatore è per specificare come dovrebbero essere combinati i nodi. Un'istruzione LOAD che carica un file con dati annidati che non includono un delimitatore utilizza il valore specificato dalla variabile dello script FieldNameDelimiter. Se non viene fornito nessun delimitatore e FieldNameDelimiter non è configurato, allora il delimitatore predefinito sarà '.'.

Vengono caricati solo i nodi che corrispondono al percorso Table is.

I nodi di dati vengono caricati in un file senza annidarli.

I nodi del gruppo raggruppano i campi nel gruppo aggiungendo il relativo nome al nome del campo. Ad esempio, i gruppi con field1 e field2 vengono caricati come group.field1 e group.field2.

I nodi elenco generano i campi chiave che sono utilizzati per collegare le tabelle. Per esempio, %Key_group.list. Qualsiasi gruppo o nodo di dati nell'elenco deve essere caricato in un'istruzione LOAD separata. Verrà aggiunto anche un campo chiave all'elenco padre.

I seguenti esempi mostrano lo stesso file Parquet annidato, creato nell'esempio in Archiviazione dei dati annidati in file Parquet, caricato in un'app, utilizzando Gestione dati e Editor caricamento dati (con la funzione di script predefinita Seleziona dati e funzioni di script personalizzate).

Esempio: Gestione dati

Se si carica customer.parquet in Gestione dati e si applicano tutte le associazioni consigliate, si ottiene il seguente modello dati:

Modello dati per il caricamento di company.parquet con Gestione dati

Modello dati che mostra le tabelle company:salesrep.salesrep, company, company:headquarter.headquarter e company:headquarter.headquarter.city:region.region

Esempio: Editor caricamento dati (Seleziona dati)

Se si caricano i dati utilizzando Seleziona dati in Editor caricamento dati, si ottiene il seguente script:

LOAD company, contact, "%Key_company:headquarter", "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet); LOAD country, city, "%Key_city:region", "%Key_company:headquarter" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); LOAD region, "%Key_city:region" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); LOAD salesrep, "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]);

Il modello dati appare così in Sistema di visualizzazione modello dati.

Modello dati per il caricamento di company.parquet con Seleziona dati in Editor caricamento dati

Modello dati che mostra le tabelle salesrep, company, headquarter e region.

Esempio: Editor caricamento dati (script di caricamento personalizzato)

Se si utilizza uno script di caricamento personalizzato, si ottiene un maggiore controllo sul modo in cui campi e tabelle vengono caricati da customer.parquet. Il seguente script di caricamento carica tabelle e campi da company.parquet:

LOAD * FROM [lib://DataFiles/company.parquet] (parquet); LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]); DROP FIELD [%Key_company:salesrep]; LOAD *, Lookup('company', '%Key_company:headquarter', [%Key_company:headquarter], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); DROP FIELD [%Key_company:headquarter]; LOAD *, Lookup('city', '%Key_city:region', [%Key_city:region], 'headquarter') as city; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); DROP FIELD [%Key_city:region];

Questi risultati nel seguente modello dati, che è identico al modello dati originale prima che i dati siano archiviati nel file Parquet.

Modello dati per il caricamento di company.parquet con uno script personalizzato con Editor caricamento dati

Modello dati con le tabelle headquarter, region, salesrep e company, che rispecchiano il modello dati esatto dall'app di origine.

Limitazioni

I file Parquet hanno le seguenti limitazioni:

  • I file parquet che contengono un campo data e ora int96 potrebbero non caricarsi correttamente.

    Int96 è un tipo di dato deprecato che contiene informazioni su data e ora senza il fuso orario. Verrà eseguito un tentativo di lettura del campo in UTC ma, dato che ci sono implementazioni di fornitori di diverso tipo, il successo del tentativo non è garantito.

    Verificare i dati caricati e adattarli al fuso orario corretto mediante uno scarto, se necessario.

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!