QlikView - Charge incrémentielle

À mesure que le volume de données dans la source de données d'un document QlikView augmente, le temps nécessaire pour charger le fichier augmente également, ce qui ralentit le processus d'analyse. Une approche pour minimiser ce temps de chargement des données consiste à charger uniquement les enregistrements qui sont nouveaux dans la source ou ceux mis à jour. Ce concept de chargement uniquement des enregistrements nouveaux ou modifiés de la source dans le document QlikView est appeléIncremental Load.

Pour identifier les nouveaux enregistrements à partir de la source, nous utilisons soit une clé séquentielle unique, soit un horodatage pour chaque ligne. Ces valeurs de clé unique ou de champ de temps de données doivent être transmises du fichier source au document QlikView.

Considérons le fichier source suivant contenant les détails du produit dans un magasin de détail. Enregistrez-le en tant que fichier .csv dans le système local où il est accessible par QlikView. Sur une période de temps, d'autres produits sont ajoutés et la description de certains changements de produits.

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

Chargement des données dans QlikView

Nous allons charger le fichier CSV ci-dessus à l'aide de l'éditeur de script (Ctrl + E) en choisissant l'option Fichiers de table comme indiqué ci-dessous. Ici, nous sauvegardons également les données dans un fichier QVD dans le système local. Enregistrez le document QlikView en tant que fichier .qvw.

Vérification des données chargées.

Nous pouvons vérifier les données chargées dans le document QlikView en créant un objet feuille appelé Table Box. Ceci est disponible dans le menu Disposition etNew Sheet Objects sous-menu.

Création de la disposition du tableau

Lors de la sélection du Table Boxfeuille, nous arrivons à l'écran suivant, qui permet de sélectionner les colonnes et leurs positions dans le tableau à créer. Nous choisissons les colonnes suivantes et leurs positions et cliquons sur Terminer.

Affichage des données existantes

Le graphique suivant montrant les données présentées à l'étape précédente apparaît.

Mise à jour des données sources

Ajoutons les trois autres enregistrements suivants aux données source. Ici, les ID de produit sont les numéros uniques, qui représentent les nouveaux enregistrements.

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

Script de chargement incrémentiel

Maintenant, nous écrivons le script pour extraire uniquement les nouveaux enregistrements de la source.

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

Le script ci-dessus ne récupère que les nouveaux enregistrements, qui sont chargés et stockés dans le fichier qvd. Comme nous le voyons les enregistrements avec les nouveaux ID de produit 13, 14 et 15.