QlikView – 增量负载
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 文件。
验证加载的数据。
我们可以通过创建一个名为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 的记录。