-
tMapコンポーネントをダブルクリックして、グラフィカルマッピングエディターを開きます。
-
[Output] (出力)テーブル(tMapをtMySQLOutputにリンクした時に自動的に作成されたもの)が、ルックアップフロー(large_data_volume)とメインフロー(people_age)からの一致する行によって形成されます。
出力に渡されるメインフロー行を選択し、それらをドラッグして出力テーブル(マッピングエディターの右側)に貼り付けます。
この例では、メインフローからの選択に次のフィールドが含まれています: id、first_name、last_Name、age。
ルックアップテーブルから、次のカラムが選択されています: city
入力テーブル(peopleとlarge_volume)から選択したカラムを出力テーブルにドロップします。
-
次に、メインフローとルックアップフロー間の結合を設定するために使われます。
メインフローテーブル(上部)のageカラムを選択し、ルックアップフローテーブル(この例ではlarge_volume)のageカラムに向かってドラッグします。
ルックアップテーブルのリンクされた式の横に鍵のアイコンが表示されます。これで結合が確立されました。
-
[tMap settings] (tMap設定)ボタンをクリックし、[Lookup Model] (ルックアップモデル)に対応する[...]ボタンをクリックして、処理中の各行のルックアップをリロードするよう[Options] (オプション)ダイアログボックスから[Reload at each row] (行ごとにリロード)オプションを選択します。
-
同様に、ルックアップテーブルで[Match Model] (一致モデル)を[All matches] (すべての一致)に設定します。これは、age一致のすべてのインスタンスを出力フローに収集するためです。
-
次に、ルックアップテーブルに、ageカラムに基づいてフィルタリングを実装します。[Reload at each row] (行ごとにリロード)オプションを選択すると、GlobalMapKeyフィールドが自動的に作成されます。実際、この式を使って参照データを動的にフィルタリングし、メインフローと結合する時に関連情報のみをロードできます。
のシナリオの冒頭で述べたように、メインフローデータには、40歳または60歳の人のみが含まれます。40や60とは異なる年齢を含むすべてのルックアップ行をロードする手間を省くために、メインフローの年齢をグローバル変数として使い、ルックアップフィルタリングにフィードするという方法があります。
-
メインフローテーブルから、Ageカラムをルックアップテーブルの[Expr.] (式)フィールドにドロップします。
-
次に、[globalMap Key] (グローバルマップキー)フィールドに、式を使って変数名を入力します。この例では、"people.Age"となります。
[OK]をクリックしてマッピング設定を保存し、デザインワークスペースに戻ります。
-
ルックアップフローの動的フィルタリングの実装を完了するには、ここでデータベース入力のクエリーにWHERE句を追加する必要があります。
-
[Query] (クエリー)フィールドの末尾に、Selectステートメントに続いて、次のWHERE句を入力します: WHERE AGE ='"+((Integer)globalMap.get("people.Age"))+"'"
-
タイプが変数として使われるカラムに対応していることをご確認ください。このユースケースでは、AgeはInteger型です。そして、マップエディターの[globalMap key] (グローバルマップキー)フィールドで設定した方法で変数を使います。
-
tMysqloutputコンポーネントをダブルクリックして、プロパティを定義します。
-
[Use an existing connection] (既存の接続を使用)チェックボックスをオンにすると、作成済みのDB接続を利用できます。
ターゲットテーブル名および関連するDBアクションを定義します。