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.