# ジョブを設定

## 親ジョブを設定

### 手順

1. [Context] (コンテキスト)ビューで:
   1. 以下の3つの変数を追加します:
      * filename、文字列型
      * table\_name、文字列型
      * directory、ディレクトリー型
   2. 変数ディレクトリーの[Value] (値)フィールドをクリックして、[directory] (ディレクトリー)を指定します。表示される小さなボタンをクリックして、ソースファイルが保存されているディレクトリーを参照します。

      ![\[Context\] (コンテキスト)ビューのスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-integration-job-examples/Resources/images/dynamicschema_jobexample_context.png)
2. tFileListコンポーネントの[Basic settings] (基本設定)ビューで、[Directory] (ディレクトリー)フィールドにcontext.directoryディレクトリーを埋めます。

   情報メモヒント: フィールド内をクリックし、[Ctrl] + [Shift]キーを押して、使用可能な変数のリストにアクセスします。
3. tIterateToFlow コンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開いて、以下のようにコンポーネントを設定します:
   1. スキーマエディターでfilename(文字列型)という名前のカラムを追加します。
   2. [Mapping] (マッピング)テーブルの[Value] (値)フィールドに、tFileListコンポーネントによって生成されたCURRENT\_FILEグローバル変数を((String)globalMap.get("tFileList\_1\_CURRENT\_FILE"))の形式で入力します。
4. tFixedFlowInputコンポーネントをダブルクリックし、[Basic settings] (基本設定) ビューを開き、コンポーネントを設定します:
   1. スキーマに2つのカラムを追加します: file\_name(文字列型)およびtable\_name(文字列型)。
   2. [Use Inline Table] (インラインテーブルを使用)オプションを選択し、テーブルで次のファイルからテーブルへのマッピングを定義します:
      | file\_name | table\_name |
      | --- | --- |
      | "customer\_details.csv" | "customer" |
      | "delivery\_details.csv" | "delivery" |
      | "employee\_details.csv" | "employee" |
5. tMapコンポーネントをダブルクリックして、マップエディターを開きます。マップエディターで:
   1. (tIterateToFlowコンポーネントからの)テーブルrow1のfilenameカラムをドラッグし、(tFixedFlowInputコンポーネントからの)テーブルrow2のfile\_nameカラムにドロップして、2つのテーブルを結合してファイル名を検索します。
   2. スパナボタンをクリックして結合プロパティを表示し、次の設定を行います:
      * [Match Model] (マッチモデル)を[Unique match] (ユニークマッチ)に
      * [Join Model] (結合モデル)を[Inner Join] (内部結合)に
   3. スキーマエディターで、outテーブルに2つのカラムを追加します: tablename(文字列型)およびfilename(文字列型)。
   4. テーブルrow1のfilenameカラムをドラッグし、テーブルoutのfilenameカラムにドロップします。
   5. テーブル row2のtable\_nameカラムをドラッグして、、テーブルoutのtablenameカラムにドロップします。

      ![マップエディターのスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-integration-job-examples/Resources/images/dynamicschema_jobexample_tmap.png)
   6. [OK]をクリックして設定を検証し、マップエディターを閉じます。
6. tJavaRowコンポーネントをダブルクリックし、[Code] (コード)フィールドに次のコードを入力します。
   ```
   context.tablename = out.tablename;
   context.filename = out.filename;
   ```
7. tRunJobコンポーネントの[Basic settings] (基本設定)ビューでは、以下のようになります:
   1. Jobフィールドの横にある[...]ボタンをクリックし、このサンプルの[Repository Content] (リポジトリーコンテンツ)ダイアログボックス、LoadDynamicSchemaChildから子ジョブを選択します。
   2. コンテキスト変数を子ジョブに渡すには、[Transmit whole context] (コンテキスト全体の送信)オプションを選択します。
8. Ctrl + Sを押し、ジョブを保存します。

## 子ジョブの設定

### 手順

1. [Context] (コンテキスト)ビューで、次の3つの変数を追加し、値を未定義のままにします。
   * filename、文字列型
   * tablename、文字列型
   * directory、文字列型
2. tFileInputDelimitedコンポーネント(ラベル付きInput\_file)をダブルクリックして、[Basic settings] (基本設定)ビューを開き、コンポーネントを次のように設定します:
   * スキーマエディタを開きカラム[data] (データ)を追加し、その型を[Dynamic] (動的)に設定します。 ![スキーマエディターのスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-integration-job-examples/Resources/images/dynamicschema_jobexample_input_schema.png)

   * Fillファイルアクセス用に定義されたコンテキスト変数を使用して[File name/Stream] (ファイル名/ストリーム)フィールドに入力します: context.directory+context.filename.

     情報メモヒント: フィールド内をクリックし、[Ctrl] + [Shift]キーを押して、使用可能な変数のリストにアクセスします。

   * [Header] (ヘッダー)フィールドで、スキップするファイルの先頭の行数を指定します。

     このサンプルでは、各ファイルの最初の行がヘッダー行です。

   * その他の設定はデフォルトのままにします。

   ![コンポーネントの基本設定のスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-integration-job-examples/Resources/images/dynamicschema_child_input_basicsettings.png)
3. tDBOutputコンポーネント(ラベル付きWrite\_to\_DB)をダブルクリックして、[Basic settings] (基本設定)ビューを開き、コンポーネントを次のように設定します:
   * データベース接続の詳細(ホスト名またはIPアドレス、ポート番号、データベース名、認証情報など)を指定します。
   * このサンプルでは、テーブル名に定義されたコンテキスト変数context.tablenameを[Table] (テーブル)フィールドに入力します。
   * [Action on table] (アクションテーブル)リストから[Default] (デフォルト)を選択します。
   * [Action on data] (データでのアクション)リストから、[Insert] (挿入)を選択します。
   * [Sync columns] (カラムを同期) をクリックして、スキーマが入力コンポーネントと同じであることを確認します:dataという名前の1つのカラムに[Dynamic] (動的)と入力します。
   * 他のオプションはデフォルトのままにします。

   ![コンポーネントの基本設定のスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-integration-job-examples/Resources/images/dynamicschema_child_db_basicsettings.png)
4. Ctrl + Sを押し、ジョブを保存します。