📅  最后修改于: 2020-11-29 07:24:10             🧑  作者: Mango
随着QlikView文档数据源中数据量的增加,加载文件所需的时间也增加,这会减慢分析过程。减少加载数据所需时间的一种方法是仅加载源中新记录或更新记录。仅将来自源的新记录或更改的记录加载到QlikView文档中的概念称为“增量加载” 。
为了从源中识别新记录,我们为每一行使用顺序唯一键或日期时间戳。这些唯一键或数据时间字段的值必须从源文件流到QlikView文档。
让我们考虑以下包含零售商店中产品详细信息的源文件。将其另存为QlikView可访问的本地系统中的.csv文件。在一段时间内,会添加更多产品,并且某些产品的说明也会更改。
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
通过选择“表文件”选项,我们将使用脚本编辑器(Control + E)加载上述CSV文件,如下所示。在这里,我们还将数据保存到本地系统中的QVD文件中。将QlikView文档另存为.qvw文件。
我们可以通过创建一个名为Table Box的工作表对象来检查加载到QlikView文档中的数据。这在“布局”菜单和“新建图纸对象”子菜单中可用。
选择“表格框”工作表对象后,我们进入下一个屏幕,该屏幕用于选择要创建的表中的列及其位置。我们选择以下列及其位置,然后单击“完成”。
出现下图,显示上一步中列出的数据。
让我们将以下三个记录添加到源数据中。在此,产品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。