Qlikview-incremental-load

提供:Dev Guides
移動先:案内検索

QlikView-増分負荷

QlikViewドキュメントのデータソースのデータ量が増加すると、ファイルの読み込みにかかる時間が増加し、分析プロセスが遅くなります。 データのロードにかかるこの時間を最小限に抑える方法の1つは、ソースまたは更新されたレコードで新しいレコードのみをロードすることです。 ソースからQlikViewドキュメントに新規または変更されたレコードのみをロードするというこの概念は、 Incremental Load と呼ばれます。

ソースから新しいレコードを識別するために、各行にシーケンシャルな一意キーまたは日付タイムスタンプを使用します。 一意のキーまたはデータ時間フィールドのこれらの値は、ソースファイルから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

QlikViewへのデータの読み込み

以下に示すように、[テーブルファイル]オプションを選択して、スクリプトエディター(Control + E)を使用して上記のCSVファイルを読み込みます。 ここで、データをローカルシステムのQVDファイルに保存します。 QlikViewドキュメントを.qvwファイルとして保存します。

incr_laod_create_qvd

ロードされたデータの検証。

*Table Box* というシートオブジェクトを作成することにより、QlikViewドキュメントにロードされたデータを確認できます。 これは、[レイアウト]メニューと[新しいシートオブジェクト]サブメニューで使用できます。

table_box_option

テーブルレイアウトの作成

*Table Box* シートオブジェクトを選択すると、次の画面が表示されます。この画面を使用して、作成するテーブル内の列とその位置を選択します。 次の列とその位置を選択して、[完了]をクリックします。

Incr_load_product_details

既存のデータを表示する

前の手順でレイアウトされたデータを示す次のチャートが表示されます。

incremental_load_data

ソースデータの更新

次の3つのレコードをソースデータに追加します。 ここで、製品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