QlikView - Carico incrementale

Man mano che il volume di dati nell'origine dati di un documento QlikView aumenta, aumenta anche il tempo impiegato per caricare il file, il che rallenta il processo di analisi. Un approccio per ridurre al minimo questo tempo necessario per caricare i dati consiste nel caricare solo i record nuovi nell'origine o quelli aggiornati. Viene chiamato questo concetto di caricamento solo dei record nuovi o modificati dall'origine nel documento QlikViewIncremental Load.

Per identificare i nuovi record dall'origine, utilizziamo una chiave univoca sequenziale o un indicatore di data e ora per ogni riga. Questi valori della chiave univoca o del campo data e ora devono passare dal file di origine al documento QlikView.

Consideriamo il seguente file sorgente contenente i dettagli del prodotto in un negozio al dettaglio. Salvarlo come file .csv nel sistema locale dove è accessibile da QlikView. In un periodo di tempo vengono aggiunti altri prodotti e la descrizione di alcuni cambiamenti di prodotto.

Product_Id,Product_Line,Product_category,Product_Subcategory
1,Sporting Goods,Outdoor Recreation,Winter Sports & Activities
2,"Food, Beverages & Tobacco",Food Items,Fruits & Vegetables
3,Apparel & Accessories,Clothing,Uniforms
4,Sporting Goods,Athletics,Rugby
5,Health & Beauty,Personal Care
6,Arts & Entertainment,Hobbies & Creative Arts,Musical Instruments
7,Arts & Entertainment,Hobbies & Creative Arts,Orchestra Accessories
8,Arts & Entertainment,Hobbies & Creative Arts,Crafting Materials
9,Hardware,Tool Accessories,Power Tool Batteries
10,Home & Garden,Bathroom Accessories,Bath Caddies
11,"Food, Beverages & Tobacco",Food Items,Frozen Vegetables
12,Home & Garden,Lawn & Garden,Power Equipment

Caricamento dei dati in QlikView

Caricheremo il file CSV sopra utilizzando l'editor di script (Control + E) scegliendo l'opzione File tabella come mostrato di seguito. Qui salviamo anche i dati in un file QVD nel sistema locale. Salvare il documento QlikView come file .qvw.

Verifica dei dati caricati.

Possiamo controllare i dati caricati nel documento QlikView creando un oggetto di lavoro chiamato Table Box. Questo è disponibile nel menu Layout eNew Sheet Objects sottomenu.

Creazione del layout della tabella

Selezionando il file Table Boxoggetto di lavoro, arriviamo alla schermata successiva, che serve per selezionare le colonne e le loro posizioni nella tabella da creare. Scegliamo le seguenti colonne e le loro posizioni e facciamo clic su Fine.

Visualizzazione dei dati esistenti

Viene visualizzato il grafico seguente che mostra i dati come disposto nel passaggio precedente.

Aggiornamento dei dati di origine

Aggiungiamo i seguenti altri tre record ai dati di origine. Qui, gli ID prodotto sono i numeri univoci, che rappresentano i nuovi record.

13,Office Supplies,Presentation Supplies,Display
14,Hardware,Tool Accessories,Jigs
15,Baby & Toddler,Diapering,Baby Wipes

Script di caricamento incrementale

Ora scriviamo lo script per estrarre solo i nuovi record dalla fonte.

// Load the data from the stored qvd.
Stored_Products:
LOAD Product_Id, 
     Product_Line, 
     Product_category, 
     Product_Subcategory
FROM
[E:\Qlikview\data\products.qvd]
(qvd);

//Select the maximum value of Product ID.
Max_Product_ID:
Load max(Product_Id) as MaxId
resident Stored_Products;

//Store the Maximum value of product Id in a variable.
Let MaxId = peek('MaxId',-1);

	 drop table Stored_Products;


//Pull the rows that are new.	 
NewProducts:
LOAD Product_Id,Product_Line, Product_category,Product_Subcategory
	 from [E:\Qlikview\data\product_categories.csv]
	 (txt, codepage is 1252, embedded labels, delimiter is ',', msq)
	 where Product_Id > $(MaxId);
	 
//Concatenate the new values with existing qvd.
Concatenate
LOAD Product_Id,Product_Line, Product_category, 
     Product_Subcategory
FROM [E:\Qlikview\data\products.qvd](qvd);

//Store the values in qvd.
store NewProducts into [E:\Qlikview\data\products.qvd](qvd);

Lo script precedente recupera solo i nuovi record, che vengono caricati e memorizzati nel file qvd. Come vediamo i record con i nuovi ID prodotto 13, 14 e 15.