QlikView - 增量載入



隨著 QlikView 文件資料來源中資料量的增加,載入檔案所需的時間也會增加,從而減慢分析過程。最小化載入資料所需時間的一種方法是僅載入源中新的或已更新的記錄。這種僅將新的或更改的記錄從源載入到 QlikView 文件中的概念稱為增量載入

為了識別源中的新記錄,我們使用順序唯一鍵或每行的日期時間戳。唯一鍵或日期時間欄位的值必須從原始檔流向 QlikView 文件。

讓我們考慮以下包含零售店產品詳細資訊的原始檔。將其另存為 .csv 檔案到本地系統,QlikView 可以訪問該檔案。一段時間後,添加了一些新產品,並且一些產品的描述發生了更改。

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

將資料載入到 QlikView

我們將使用指令碼編輯器 (Control+E) 透過選擇“表文件”選項來載入上述 CSV 檔案,如下所示。在這裡,我們還將資料儲存到本地系統的 QVD 檔案中。將 QlikView 文件儲存為 .qvw 檔案。

 incr_laod_create_qvd

驗證載入的資料。

我們可以透過建立一個名為表格框的工作表物件來檢查載入到 QlikView 文件中的資料。這在“佈局”選單和“新建工作表物件”子選單中可用。

table_box_option

建立表格佈局

選擇表格框工作表物件後,我們將進入下一個螢幕,該螢幕用於選擇要建立的表格中的列及其位置。我們選擇以下列及其位置,然後單擊“完成”。

Incr_load_product_details

檢視現有資料

下圖顯示了按照上一步佈局的資料。

incremental_load_data

更新源資料

讓我們向源資料中再新增以下三條記錄。此處,產品 ID 是唯一編號,代表新記錄。

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

增量載入指令碼

現在,我們編寫指令碼以僅提取源中的新記錄。

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

上述指令碼僅提取載入並存儲到 qvd 檔案中的新記錄。我們可以看到產品 ID 為 13、14 和 15 的記錄。

incremental_load_final_data
廣告
© . All rights reserved.