tMapルックアップモデル - 7.2

tMap

EnrichVersion
7.2
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
EnrichPlatform
Talend Studio
task
ジョブデザインと開発 > サードパーティーシステム > 変換処理コンポーネント > 変換
データガバナンス > サードパーティーシステム > 変換処理コンポーネント > 変換
データクオリティとプレパレーション > サードパーティーシステム > 変換処理コンポーネント > 変換

ニーズに応じて最適なモデルを選択できるように、この記事では各モデルについて詳しく説明します。

さまざまなタイプのビジネス要件に合わせて、3種類のルックアップロードモデルが提供されています。
  • 一括ロード
  • 行ごとにリロード
  • 行ごとにリロード(キャッシュ)

tMap内で異なるデータソースの間に結合([Inner Join] (内部結合)[Left Outer Join] (左外部結合)を含む)を実装する時は、常にメインフローが1つだけあり、tMapに接続された1つ以上のルックアップフローがあります。ルックアップフローのレコードはすべて、メインフローの各レコードを処理する前にロードする必要があります。

説明

[Load once] (一括ロード): メインフローの各レコードを処理する前に、[Store temp data] (一時データ格納)オプションがTrueに設定されている場合、メモリ内またはローカルファイル内のルックアップフローから、すべてのレコードを1回で(1回限り)ロードします。これが結合のデフォルト設定です。ルックアップフローへの結合を使用して処理するメインフローの中に大きなレコードのセットがある場合には、これが最適なオプションとなります。

[Reload at each row] (行ごとにリロード): メインフローのレコードごとにルックアップフローの全レコードが再びロードされます。各メインフローレコードに対してルックアップフローが繰り返しロードされるため、一般にこのオプションではジョブ実行時間が長くなります。ただし、このオプションは以下の2つの状況では優先すべきです。

  1. ルックアップデータフローが絶えず更新される状況にあり、結合実行後に最新のデータを取得するために、メインフローの各レコード用に最新のルックアップデータをロードしたい。
  2. メインフローの行数が少なく、ルックアップフローのデータベーステーブルから取得した大きなデータセットがある。[Load once] (一括ロード)オプションを使用するとOutOfMemory例外が発生するおそれがあります。この状況では、[Reload at each row] (行ごとにリロード)オプションが考慮されます。

次のセクションの手順では、[Reload at each row] (行ごとにリロード)モデルを使用する方法について説明します。

[Reload at each row (cache)] (行ごとにリロード - キャッシュ): このモデルは[Reload at each row] (行ごとにリロード)モデルと同じように機能し、ルックアップフローのすべてのレコードはメインフローの各レコードのために再びロードされます。ただし、このモデルは[Store temp data on disk] (一時データをディスクへ保管)オプションには使用できません。ルックアップデータはメモリにキャッシュされており、新たなロードが発生すると、キャッシュにまだ入っていないレコードのみがロードされます。これは、同じレコードを2度ロードすることを避けるためです。

手順

この手順では、[Reload at each row] (行ごとにリロード)モデルを使用する方法について説明します。処理のパフォーマンスを向上させるには、メインデータフローをフィルタリングし、処理が必要なもののみを処理するためにグローバル変数を使用することをお勧めします。

  1. メインフローの1つのカラムの値をグローバル変数(tSetGlobalVarコンポーネント)に設定し、データ全体をロードするのではなく、メインフローの1つまたは複数の値に基づいてテーブルから一致したデータのみをロードするために、ルックアップクエリーのWHERE条件でこの変数を使用します。

  2. tMapコンポーネントで、[Lookup Model] (ルックアップモデル)カラムに[Reload at each row] (行ごとにリロード)モデルを選択します。

  3. ステップ1で設定したグローバル変数をルックアップクエリーで使用して、一致したデータのみをテーブルからロードします。