はじめに

ここでは、ロード処理で取り込むデータを絞り込むために利用される、WhereとWhere Existsについてご紹介します。

準備

サンプルデータのダウンロード

以下のリンクからサンプルデータをダウンロードし、ダウンロードしたZIPファイルを任意の場所に解凍してください。

>>サンプルデータ(売上データ)のダウンロード

アプリの作成とデータの取り込み

新規のアプリを作成し、ダウンロードしたデータを取り込んでください。以下のようなデータモデルが作成されます。

image

ロードエディタを開いて「自動生成セクション」のタブを開き、「ロック解除」をクリックしてロックを解除します。

1

条件指定によるデータの絞り込み – Where

では、まず条件を指定してソースデータから取り込むデータの絞り込みを行ってみたいと思います。ここでは、「商品マスタ」の中から「商品カテゴリ」が「ビデオカメラ」のレコードのみに絞り込みを行います。

商品マスタの取り込み部分のスクリプトに以下の赤字のステートメントを追加します。

[商品マスタ]:
LOAD 
[商品コード],
	[商品名],
	[商品カテゴリ],
	[取引先コード]
 FROM [lib://売上データ/商品マスタ.xlsx]
(ooxml, embedded labels, table is 商品マスタ)
Where [商品カテゴリ] = 'ビデオカメラ';

上記の変更を行ってリロード処理を実行すると、以下の形で取り込まれるデータが絞り込まれます。

image

尚、Where句には以下の様な条件の指定を行うことも可能です。

  • Where [商品コード] >= 3 AND [商品コード] <=5;      //3以上、5以下の[商品コード]に絞り込み
  • Where [商品名] Like ‘*テレビ*’;     //「商品名」にテレビを含むレコードに絞り込み

既に存在するデータのみの取り込み – Where Exists

次に、既に取込まれている「商品マスタ」に存在する「商品コード」に合致するデータに絞り込んで「売上明細」のデータを取り込みます。

[売上明細]:
LOAD 
[伝票番号],
	[都道府県コード],
	[顧客コード],
	[商品コード],
	[数量],
	[販売価格],
	[販売原価]
 FROM [lib://売上データ/売上明細.xlsx]
(ooxml, embedded labels, table is 売上明細)
Where Exists([商品コード]);

 

上記の処理を実行すると、既に取り込まれている「商品マスタ」に存在する「商品コード」(1~5)のみが取り込まれます。

尚、上記例では両方のテーブルに存在する項目名が共通の「商品コード」となっているため引数は一つとなりますが、異なる場合には以下の形でそれぞれのテーブルの項目名を指定します。この時、1つ目の引数は最初に取り込まれるテーブルの項目名で「’ (シングルクオート)」で括りますが、2つ目の引数に指定する後に取り込まれるテーブルの項目名はクオートで括りませんので注意が必要です。

  • Where Exists(‘商品コード’, 商品ID); //最初のテーブルの項目名が「商品コード」、後に取り込まれるテーブルの項目名が「商品ID」の場合

また、逆に最初のテーブルに存在しない項目のみを「Where Not Exists」を使って後のテーブルから取り込むことも出来ます。

  • Where Not Exists(‘商品コード’, 商品ID);

まとめ

ロード処理で取り込むデータを絞り込むために利用される、WhereとWhere Existsについてご紹介しました。