Qlikview-keeps
QlikView-Keeps
QlikViewのkeepコマンドを使用して、2つのデータセットのデータを結合し、両方のデータセットをメモリで使用できるようにします。 前の章で説明した結合に非常に似ていますが、2つの大きな違いがあります。 最初の違いは-キープの場合です。両方のデータセットはQlikViewのメモリで利用できますが、結合では、ロードステートメントは列を選択する必要のあるデータセットを1つだけ生成します。 2番目の違いは、結合の場合に外部結合を使用できるため、外部キープの概念がないことです。
入力データ
次の2つのCSVデータファイルを考えてみましょう。これらのファイルは、詳細な説明の入力として使用されます。
Product List:
ProductID,ProductCategory
1,Outdoor Recreation
2,Clothing
3,Costumes & Accessories
4,Athletics
5,Personal Care
6,Hobbies & Creative Arts
Product Sales:
ProductID,ProductCategory,SaleAmount
4,Athletics,1212
5,Personal Care,5211
6,Hobbies & Creative Arts,1021
7,Display Board,2177
8,Game,1145
9,soap,1012
10,Beverages & Tobacco,2514
インナーキープ
*Control + E* を押すと呼び出されるスクリプトエディターを使用して、上記の入力データを読み込みます。 オプション *Table Files* を選択し、入力ファイルを参照します。 次に、スクリプト内のコマンドを編集して、テーブル間に内部キープを作成します。
内部キープは、両方のテーブルに存在する行のみをフェッチします。 この場合、 Product ListおよびProduct Sales テーブルの両方で使用可能な行がフェッチされます。 メニューの[レイアウト]→[新しいシートオブジェクト]→[テーブルボックス]を使用して、テーブルボックスを作成します。
最初に、 productSales テーブルのみを選択します。このテーブルには、表示されるProductID、ProductCategory、SaleAmountのフィールドがあります。
次に、 ProductList データセットを選択します。これにより、ProductIDフィールドとProductCategoryフィールドが提供されます。
最後に、 All Tables オプションを選択し、すべてのテーブルから使用可能なすべてのフィールドを取得します。
次のレポートは、上記のステップのすべてのテーブルボックスを示しています。
左キープ
左キープは左結合に似ており、QlikViewのメモリで使用可能な両方のデータセットとともに左のテーブルのすべての行を保持します。
左キープスクリプト
次のスクリプトは、左キープコマンドで結果のデータセットを作成するために使用されます。
productsales:
LOAD ProductID,
ProductCategory,
SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);
left keep(productsales)
productlists:
LOAD ProductID,
ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);
左キープデータ
上記のようにスクリプトを変更し、 Control + R を使用してレポートのデータを更新すると、シートオブジェクトに次のデータが取得されます。
右キープ
右キープは左結合に似ています。これは、QlikViewのメモリで使用可能な両方のデータセットとともに、右のテーブルのすべての行を保持します。
右キープスクリプト
次のスクリプトは、左キープコマンドで結果のデータセットを作成するために使用されます。
productsales:
LOAD ProductID,
ProductCategory,
SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);
right keep(productsales)
productlists:
LOAD ProductID,
ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);
データを正しく保持
上記のようにスクリプトを変更し、 Control + R を使用してレポートのデータを更新すると、シートオブジェクトに次のデータが取得されます。