Vai al contenuto principale

File QVD

Un file QVD (QlikView Data) è un file contenente una tabella di dati esportati da Qlik Sense o licenza. QVD è un formato di Qlik nativo che può essere scritto e letto esclusivamente da Qlik Sense o licenza. Il formato di file è ottimizzato per la velocità di lettura dei dati da uno script di Qlik Sense rimanendo comunque molto compatto. La lettura di dati da un file QVD è in genere 10-100 volte più veloce rispetto alla lettura da altre sorgenti dati.

I file QVD possono essere letti in due modalità: standard (veloce) e ottimizzata (più veloce). La modalità selezionata viene determinata automaticamente dall'engine degli script di Qlik Sense. La modalità ottimizzata può essere utilizzata solo quando tutti i campi caricati vengono letti senza alcuna trasformazione (formule applicate ai campi), sebbene sia consentito modificare i nomi dei campi. La clausola Where per la decompressione dei record da parte di Qlik Sense disabiliterà anche il caricamento ottimizzato.

Un file QVD conserva esattamente una tabella dati ed è composto da tre parti:

  • Un'intestazione XML (con set di caratteri UTF-8) che descrive i campi nella tabella, la presentazione delle informazioni successive e altri metadati.
  • Tabelle di simboli in un formato a byte compressi.
  • Dati effettivi della tabella in un formato a bit compressi.

I file QVD possono essere utilizzati a fini diversi. È possibile identificare facilmente quattro utilizzi principali. A una qualsiasi situazione, è possibile applicare diversi utilizzi:

  • Incremento della velocità di caricamento dei dati
  • Eseguendo il buffer in memoria di blocchi di dati di input che non cambiano oppure che cambiano lentamente nei file QVD, l'esecuzione dello script diventa notevolmente più veloce per le serie di dati di grandi dimensioni.

  • Diminuzione del carico sui server di database
  • Anche la quantità di dati trasferiti da sorgenti dati esterne può essere ridotta considerevolmente. Ciò consente di ridurre il carico di lavoro sui database esterni e il traffico di rete. Inoltre, quando diversi script Qlik Sense condividono gli stessi dati, è sufficiente caricarli una volta dal database sorgente in un file QVD. Le altre applicazioni possono utilizzare gli stessi dati tramite questo file QVD.

  • Consolidamento dei dati provenienti da più applicazioni Qlik Sense
  • L'istruzione dello script Binary consente di caricare i dati da una singola applicazione Qlik Sense a un'altra, mentre con i file QVD uno script di Qlik Sense è in grado di combinare i dati provenienti da un numero qualsiasi di applicazioni Qlik Sense. Questa possibilità amplia le prospettive per le applicazioni che consolidano dati simili da unità aziendali diverse e così via.

  • Carico incrementale
  • In molti casi comuni, la funzionalità QVD può essere utilizzata per facilitare il carico incrementale, ad esempio scaricando esclusivamente nuovi record da un database in crescita.

Creazione di file QVD

Un file QVD può essere creato in due modi:

  • Creazione e denominazione esplicite utilizzando il comando Store nello script Qlik Sense.
  • 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.

  • Creazione automatica e manutenzione dallo script.
  • Facendo precedere all'istruzione load o select il prefisso Buffer, Qlik Sense creerà automaticamente un file QVD che, in determinate condizioni, può essere utilizzato al posto della sorgente dati originale quando si ricaricano i dati.

Non esiste differenza fra i file QVD risultanti relativamente alla velocità di lettura.

Store

Questa funzione di script crea un file QVD, CSV o txt con nome esplicito.

Sintassi:  

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

L'istruzione può esportare campi solo da una tabella dati. Se occorre esportare i campi da più tabelle, un'unione esplicita deve essere eseguita precedentemente nello script per la creazione della tabella dati da esportare.

I valori di testo sono esportati nel file CSV in formato UTF-8. È possibile specificare un delimitatore, vedere LOAD. L'istruzione store associata a un file CSV non supporta l'esportazione 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. Aprire l'app Advanced Scripting Tutorial.
  2. Fare clic sulla sezione dello script Product.
  3. Aggiungere quanto segue alla fine dello script:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Lo script avrà questo aspetto:

    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. Fare clic su Carica dati.
  6. Il file Product.qvd dovrebbe ora trovarsi nell'elenco dei file.

    Questo file di dati è il risultato dello script Crosstable e corrisponde a una tabella con tre colonne, una colonna per ogni categoria (Product, Month, Sales). Questo file di dati può ora essere utilizzato per sostituire l'intera sezione dello script Product .

Lettura dei dati dai file QVD

Un file QVD può essere letto o modificato da Qlik Sense utilizzando i metodi seguenti:

  • Caricando un file QVD come sorgente dati esplicita. È possibile fare riferimento ai file QVD con un'istruzione load nello script di Qlik Sense proprio come qualsiasi altro tipo di file di testo (csv, fix, dif, biff e così via).
  • 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);
  • Caricamento automatico di file QVD inseriti nel buffer. Quando si utilizza il prefisso buffer nelle istruzioni load o select, non è necessaria alcuna istruzione esplicita per la lettura. Qlik Sense determina in quale misura utilizzare i dati dal file QVD o acquisire i dati tramite l'istruzione LOAD o SELECT originale.
  • Accesso ai file QVD dallo script. È possibile utilizzare numerose funzioni di script (tutte che iniziano con QVD) per recuperare diverse informazioni sui dati individuati nell'intestazione XML di un file QVD.

  1. Impostare come commento l'intero script nella sezione Product.
  2. Immettere lo script seguente:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd);			

  4. Fare clic su Carica dati.
  5. I dati vengono caricati dal file QVD.

    Finestra di avanzamento del caricamento dati

    Finestra di avanzamento del caricamento dati.
Nota informaticaPer informazioni sull'utilizzo di file QVD per caricamenti incrementali, vedere questo post di blog in Qlik Community: Panoramica del caricamento incrementale di Qlik

Buffer

È possibile creare e gestire automaticamente i file QVD mediante il prefisso Buffer. Questo prefisso può essere utilizzato in quasi tutte le istruzioni LOAD e SELECT di uno script e indica che i file QVD vengono utilizzati per memorizzare nella cache/nel buffer il risultato dell'istruzione.

Sintassi:  

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

Se nessuna opzione viene utilizzata, il buffer QVD creato alla prima esecuzione dello script verrà utilizzato indefinitamente.

Esempio:  

Buffer load * from MyTable;

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

Amount è un numero che specifica l'intervallo di tempo. È possibile utilizzare Decimals. Se omessa, verrà utilizzata l'unità di misura giorni.

In genere, l'opzione stale after viene utilizzata con sorgenti del database i cui dati originali non dispongono di alcun indicatore temporale semplice. Una clausola stale after dichiara semplicemente l'intervallo di tempo a partire dalla creazione del buffer QVD, trascorso il quale non verrà più considerato valido. Prima di quel tempo, il buffer QVD verrà utilizzato come sorgente dei dati e, trascorso l'intervallo specificato, verrà utilizzata la sorgente dati iniziale. Il file del buffer QVD verrà aggiornato automaticamente, quindi avrà inizio un nuovo intervallo.

Esempio:  

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

Incremental

L'opzione incremental consente di leggere solo parte di un file sottostante. La dimensione precedente del file viene salvata nell'intestazione XML del file QVD. Queste informazioni risultano particolarmente utili con i file di registro. Tutti i record caricati durante la sessione precedente vengono letti dal file QVD, mentre i nuovi record seguenti vengono letti dalla sorgente originale, quindi viene creato un file QVD aggiornato.

È bene ricordare che l'opzione incremental può essere utilizzata solo con istruzioni LOAD e con file di testo e che non è possibile utilizzare il carico incrementale quando sono stati modificati o eliminati dati precedenti.

Esempio:  

Buffer (incremental) load * from MyLog.log;

I buffer QVD vengono normalmente rimossi quando non esistono più riferimenti a essi durante l'intera esecuzione di uno script nell'app che li ha creati oppure quando l'app che li ha creati non esiste più. L'istruzione Store deve essere utilizzata se si desidera memorizzare il contenuto del buffer in un file QVD o CSV.

  1. Creare una nuova app e assegnarle un nome.
  2. Aggiungere una nuova sezione dello script nell'editor caricamento dati.
  3. Nel menu a destra, in DataFiles, fare clic su Seleziona dati.

  4. Caricare e selezionare Cutlery.xlsx.
  5. Nella finestra Seleziona dati da, fare clic su Inserisci script.
  6. Impostare come commenti i campi nell'istruzione LOAD e modificare l'istruzione LOAD nel modo seguente:
  7. Buffer LOAD *

    Lo script avrà questo aspetto:

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

  8. Fare clic su Carica dati.
  9. La prima volta che vengono caricati i dati, il caricamento avverrà da Cutlery.xlsx.

    Finestra di avanzamento del caricamento dati

    Finestra di avanzamento del caricamento dati.

    L'istruzione Buffer crea anche un file QVD e lo memorizza in Qlik Sense. In una distribuzione cloud, viene memorizzato in una directory nel cloud.

  10. Fare di nuovo clic su Carica dati.
  11. Questa volta i dati vengono caricati dal file QVD creato dall'istruzione Buffer quando i dati sono stati caricati per la prima volta.
  12. Finestra di avanzamento del caricamento dati

    Finestra di avanzamento del caricamento dati.

Grazie!

Questo tutorial è stato completato. Ci auguriamo che l'utente abbia acquisito ulteriori informazioni sugli script in Qlik Sense. Visitare il sito Web del programma per ulteriori informazioni sul materiale formativo disponibile.