親ジョブを設定
手順
-
[Contexts] (コンテキスト)ビューでは以下のようにします:
-
以下の3つの変数を追加します:
- filename、文字列型
- table_name、文字列型
- directory、ディレクトリー型
-
変数ディレクトリーの[Value] (値)フィールドをクリックして、[directory] (ディレクトリー)を指定します。表示される小さなボタンをクリックして、ソースファイルが保存されているディレクトリーを参照します。
-
以下の3つの変数を追加します:
-
tFileListコンポーネントの[Basic settings] (基本設定)ビューで、[Directory] (ディレクトリー)フィールドにcontext.directoryディレクトリーを埋めます。
情報メモヒント: フィールド内をクリックし、[Ctrl] + [Shift]キーを押して、使用可能な変数のリストにアクセスします。
-
tIterateToFlow コンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開いて、以下のようにコンポーネントを設定します:
- スキーマエディターでfilename(文字列型)という名前のカラムを追加します。
- [Mapping] (マッピング)テーブルの[Value] (値)フィールドに、tFileListコンポーネントによって生成されたCURRENT_FILEグローバル変数を((String)globalMap.get("tFileList_1_CURRENT_FILE"))の形式で入力します。
-
tFixedFlowInputコンポーネントをダブルクリックし、[Basic settings] (基本設定) ビューを開き、コンポーネントを設定します:
- スキーマに2つのカラムを追加します: file_name(文字列型)およびtable_name(文字列型)。
-
[Use Inline Table] (インラインテーブルを使用)オプションを選択し、テーブルで次のファイルからテーブルへのマッピングを定義します:
file_name table_name "customer_details.csv" "customer" "delivery_details.csv" "delivery" "employee_details.csv" "employee"
-
tMapコンポーネントをダブルクリックして、マップエディターを開き、マップエディターで以下のようにします:
- (tIterateToFlowコンポーネントからの)テーブルrow1のfilenameカラムをドラッグし、(tFixedFlowInputコンポーネントからの)テーブルrow2のfile_nameカラムにドロップして、2つのテーブルを結合してファイル名を検索します。
-
スパナボタンをクリックして結合プロパティを表示し、次の設定を行います:
- [Match Model] (マッチモデル)を[Unique match] (ユニークマッチ)に
- [Join Model] (結合モデル)を[Inner Join] (内部結合)に
- スキーマエディターで、outテーブルに2つのカラムを追加します: tablename(文字列型)およびfilename(文字列型)。
- テーブルrow1のfilenameカラムをドラッグし、テーブルoutのfilenameカラムにドロップします。
-
テーブル row2のtable_nameカラムをドラッグして、、テーブルoutのtablenameカラムにドロップします。
- [OK]をクリックして設定を検証し、マップエディターを閉じます。
-
tJavaRowコンポーネントをダブルクリックし、[Code] (コード)フィールドに次のコードを入力します。
context.tablename = out.tablename; context.filename = out.filename;
-
tRunJobコンポーネントの[Basic settings] (基本設定)ビューでは、以下のようになります:
- Jobフィールドの横にある[...]ボタンをクリックし、このサンプルの[Repository Content] (リポジトリーコンテンツ)ダイアログボックス、LoadDynamicSchemaChildから子ジョブを選択します。
- コンテキスト変数を子ジョブに渡すには、[Transmit whole context] (コンテキスト全体の送信)オプションを選択します。
- [Ctrl] + [S]キーを押してジョブを保存します。