# DSQLマップでコンテキスト変数を使用

getContextVariableファンクションを使い、ジョブから変数を呼び出します。

## 始める前に

* 入力と出力のストラクチャーが作成済みであること。ストラクチャーの作成には下のJSONサンプルを使用できます。

## このタスクについて

この例では、ジョブで設定されているコンテキスト変数からの入力が必要でエレメントが2つ多い類似の出力に、入力JSONストラクチャーをマッピングしたいとします。

入力データは次のようになります。

```
{
    "company": "acme",
    "items": [
        {
            "item": "hammer",
            "amount": 5.55
        },
        {
            "item": "screwdriver",
            "amount": 7.23
        }
    ]
}
```

出力ストラクチャーは次のようになります。

```
{
    "company": "",
    "date": "",
    "items": [
        {
            "item": "",
            "amount": 5.55,
            "taxes": 2.1
        }
    ]
}
```

## 手順

1. 新しいDSQLマップを作成して入力ストラクチャーと出力ストラクチャーを追加します。
2. 入力ルートエレメントを出力ルートに配置し、一致する出力エレメントに入力エレメントをすべてマッピングさせます。
3. dateエレメントをクリックして次の式を入力します。
   ```
   getContextVariable('date')
   ```

   getContextVariableを使えば、ジョブでDSQLマップを使用する時にコンテキスト変数を呼び出すことができます。この場合、ジョブにはdateという名前の変数があります。
4. taxesエレメントをクリックして次の式を入力します。
   ```
   amount * getContextVariable('taxpct') / 100
   ```

   この式は、amountエレメント値とtaxpctコンテキスト変数で指定された値を使ってtaxesの値が計算されることを示します。

   マップが設定されたので、次にテスト用のコンテキスト変数を設定します。
5. [Data Mapper] (データマッパー)タブで[Sample Data] (サンプルデータ)フォルダーを右クリックし、[New] (新規) &gt; [File] (ファイル)をクリックして、 test\_run\_properties.csvというファイル名を付けます。
6. ファイルを開き、次のコンテンツを追加して保存します。
   ```
   context.date,2022-12-04
   context.taxpct,12
   ```

## タスクの結果

コンテキスト変数を使用するようマップが設定されます。[Test Run] (テスト実行)を使い、追加したサンプル値でマップをテストできます。この例では、次の結果が返されます。

```
{
   "company": "acme",
   "items": [
      {
         "item": "hammer",
         "amount": 5.55,
         "taxes": 0.6659999999999999
      },
      {
         "item": "screwdriver",
         "amount": 7.23,
         "taxes": 0.8676
      }
   ]
}
```