ジョブを設定
親ジョブを設定
Procedure
-
[Context] (コンテキスト)ビューで:
-
以下の3つの変数を追加します:
- filename、文字列型
- table_name、文字列型
- directory、ディレクトリー型
-
変数ディレクトリーの[Value] (値)フィールドをクリックして、[directory] (ディレクトリー)を指定します。表示される小さなボタンをクリックして、ソースファイルが保存されているディレクトリーを参照します。
-
以下の3つの変数を追加します:
-
tFileListコンポーネントの[Basic settings] (基本設定)ビューで、[Directory] (ディレクトリー)フィールドにcontext.directoryディレクトリーを埋めます。
情報メモTip: フィールド内をクリックし、[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を押し、ジョブを保存します。
子ジョブの設定
Procedure
-
[Context] (コンテキスト)ビューで、次の3つの変数を追加し、値を未定義のままにします。
- filename、文字列型
- tablename、文字列型
- directory、文字列型
-
tFileInputDelimitedコンポーネント(ラベル付きInput_file)をダブルクリックして、[Basic settings] (基本設定)ビューを開き、コンポーネントを次のように設定します:
- スキーマエディタを開きカラム[data] (データ)を追加し、その型を[Dynamic] (動的)に設定します。
- Fillファイルアクセス用に定義されたコンテキスト変数を使用して[File name/Stream] (ファイル名/ストリーム)フィールドに入力します: context.directory+context.filename.情報メモTip: フィールド内をクリックし、[Ctrl] + [Shift]キーを押して、使用可能な変数のリストにアクセスします。
- [Header] (ヘッダー)フィールドで、スキップするファイルの先頭の行数を指定します。
このサンプルでは、各ファイルの最初の行がヘッダー行です。
- その他の設定はデフォルトのままにします。
- スキーマエディタを開きカラム[data] (データ)を追加し、その型を[Dynamic] (動的)に設定します。
-
tDBOutputコンポーネント(ラベル付きWrite_to_DB)をダブルクリックして、[Basic settings] (基本設定)ビューを開き、コンポーネントを次のように設定します:
- データベース接続の詳細(ホスト名またはIPアドレス、ポート番号、データベース名、認証情報など)を指定します。
- このサンプルでは、テーブル名に定義されたコンテキスト変数context.tablenameを[Table] (テーブル)フィールドに入力します。
- [Action on table] (アクションテーブル)リストから[Default] (デフォルト)を選択します。
- [Action on data] (データでのアクション)リストから、[Insert] (挿入)を選択します。
- [Sync columns] (カラムを同期) をクリックして、スキーマが入力コンポーネントと同じであることを確認します:dataという名前の1つのカラムに[Dynamic] (動的)と入力します。
- 他のオプションはデフォルトのままにします。
- Ctrl + Sを押し、ジョブを保存します。