大型のルックアップテーブルのバッチ処理
この記事では、大型のルックアップテーブルにバッチ処理を使う方法について説明しています。
この問題に対するアプローチの1つは、バッチ処理と呼ばれるプロセスを使うことです。バッチ処理により、レコードのバッチを1回の実行で処理することが可能になります。これが反復的に行われて、バッチがさらに作成され、すべてのレコードが処理されます。
各反復により、ソーステーブルとルックアップテーブルから固定数のレコードが処理および抽出され、結合が実行され、ターゲットテーブルがロードされます。
このようにして、プロセスがメモリ内に保持するレコード数(batchrec変数)を制御できます。
これには、コンテキスト変数、tLoopコンポーネント、tContextLoadコンポーネント、tMapコンポーネント、tJavaコンポーネントを使用します。
手順
タスクの結果
以下はサンプル実行からのログです。ソーステーブル(cust)には1億行、ルックアップテーブル(CUST_LOCATIONS)には7000万行あります。Batchrec="10000000".
ジョブの実行には66分かかり、実行サーバー上で利用可能なメモリの範囲内で実行されました。メモリ不足の例外の影響は受けませんでした。