# tMapルックアップモデル

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

さまざまなタイプのビジネス要件に合わせて、3種類のルックアップロードモデルが提供されています。

* 一括ロード
* 行ごとにリロード
* 行ごとにリロード(キャッシュ)

![](https://help.qlik.com/talend/ja-JP/components/7.3/Resources/images/190513496_lookup_models.png)

**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条件でこの変数を使用します。

   ![](https://help.qlik.com/talend/ja-JP/components/7.3/Resources/images/190513496_job_design.png)

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

   ![](https://help.qlik.com/talend/ja-JP/components/7.3/Resources/images/190513496_tMap_setting.png)

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

   ![](https://help.qlik.com/talend/ja-JP/components/7.3/Resources/images/190513496_tmysqlInput_settings.png)