各行でルックアップをリロードして詳細なマッピングを行う
次のシナリオでは、年齢の結合に基づいて、ルックアップデータベースから人の詳細を取得するジョブについて説明します。メインフローのソースデータは、people_ageというMySQLデータベーステーブルから読み取られます。これには、数値ID、英数字の姓と名、数値の年齢など、人の詳細が含まれます。人の年齢は40歳か60歳です。このテーブルのレコード数は、意図的に制限されています。
参照またはルックアップ情報は、large_data_volumeというMySQLデータベーステーブルにも保管されます。このルックアップテーブルには、メインフローの人が訪れた都市を含む多数のレコードが含まれています。わかりやすくするためにレコードの数は制限されていますが、通常の使用では、以下の例で説明する機能の有用性は、非常に大きな参照データボリュームの場合により明白になります。
パフォーマンスを最適化するために、ルックアップテーブルから行をロードするたびに実行しなくて済むように、データベース接続コンポーネントをジョブの最初に使って、ルックアップデータベーステーブルへの接続を開きます。
年齢が60または40の人からのデータのみを選択するために、このルックアップソースフローに式フィルターが適用されます。このようにして、ルックアップデータベーステーブルの関連する行のみがメインフローから各行にロードされます。
したがって、このジョブは、限られた数のメインフロー行から、式キーに一致する結果のみをロードするようにルックアップ結合を最適化する方法を示しています。
一般的に、ルックアップロードは各メインフロー行に対して実行されるため、このオプションは主に、限られた行数がメインフローで処理され、多数の参照行がルックアップされる場合に役立ちます。
結合はageフィールドで解決されます。次に、tMapコンポーネントエディターの関連するロードオプションを使って、ルックアップデータベース情報が各メインフローの受信行に対してロードされます。
このジョブでは、ソースコンポーネントと接続コンポーネントのメタデータが準備されています。データベース接続スキーマメタデータの設定方法は、データベースメタデータを一元管理をご覧ください。
このジョブは、5つのコンポーネント、4つのデータベースコンポーネント、およびマッピングコンポーネントで形成されます。