# キー/値ペアを使用

Availability-note[Beta](https://help.talend.com/r/en-US/Cloud/labels-on-talend-help-center/availability-beta)

ベータ版コンテンツ

キー/値ペアをマッピングできるようストラクチャーをアップデートします。

## 始める前に

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

## このタスクについて

この例では、自転車とスクーターに関する情報が含まれているitemsオブジェクトを持つJSONファイルがあるとします。それぞれの項目はその項目名をキーとするオブジェクトで、値はその項目の説明と価格を含んでいるオブジェクトです。目標は、項目の配列で出力を作成することです。

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

```
{
    "items": {
        "MBIKE": {
            "description": "27.5 inch electric mountain bike",
            "price": "899.99"
        },
        "EBIKE": {
            "description": "Electric hybrid bike",
            "price": "999.99"
        },
        "WBIKE": {
            "description": "Women's road bike",
            "price": "299.99"
        },
        "ESCOOT": {
            "description": "Camou electric scooter",
            "price": "749.0"
        },
        "EVSCOOT": {
            "description": "Folding electric velocity+ scooter",
            "price": "599.99"
        },
        "KSCOOT": {
            "description": "24 volt kid scooter",
            "price": "299.99"
        }
    }
}
```

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

```
{
    "items": [
        {
            "make": "",
            "description": "",
            "price": ""
        }
    ]
}
```

## 手順

1. 作成した入力ストラクチャーを開き、itemsエレメントを展開します。

   itemsエレメントには、JSONファイルに存在する項目のタイプごとに子が1つ含まれています。この場合、項目が増えるとストラクチャーが使えなくなってしまうので、ストラクチャーをアップデートして汎用性を高める必要があります。
2. [Read Only] (読み取り専用)をクリックし、ドロップダウンリストで[Editable] (編集可能)を選択します。
3. itemsをクリックし、[Group Type] (グループタイプ)ドロップダウンリストで[Map] (マップ)を選択します。

   表示されるダイアログボックスに、エレメントタイプをMapに変更するとエレメントの子エレメントが置き換えられることが示されます。[Yes] (はい)をクリックすると、keyエレメントとvalueエレメントが含まれているentryループが自動的に作成されます。
4. valueを右クリックし、descriptionとpriceという新しいエレメントを作成してストラクチャーを保存します。

   最終的なストラクチャーは次のようになります。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-key-value-structure-edited.png)

   ストラクチャーを閉じて開き直すと、[Document] (ドキュメント)タブで強調表示されている項目を確認できます。
5. 新しいDSQLマップを作成して入力ストラクチャーと出力ストラクチャーを追加します。
6. 次のエレメントをドラッグ＆ドロップしてマッピングします。
   * keyをmakeへ
   * descriptionをdescriptionへ
   * priceをpriceへ

   ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-key-value-map.png)
7. itemsをクリックし、既存の式の下に次の行を入力して、出力データをフィルテリングするようにします。
   ```
   WHERE value.price <= items['ESCOOT'].price
   ```

   この式は、マップがESCOOT入力エレメントの価格以下の項目だけを返すことを示します。値が特定のキーで参照されていることがわかります。詳細は、[TalendData Shaping Languageリファレンスガイド](https://help.qlik.com/talend/r/ja-JP/8.0/data-shaping-language-reference-guide)をご覧ください。

## タスクの結果

マップが設定され、[Test Run] (テスト実行)機能を使った結果をチェックできるようになります。この例では、次の結果が返されます。

```
{
   "items":[
      {
         "make":"ESCOOT",
         "description":"Camou electric scooter",
         "price":"749.0"
      },
      {
         "make":"WBIKE",
         "description":"Women's road bike",
         "price":"299.99"
      },
      {
         "make":"KSCOOT",
         "description":"24 volt kid scooter",
         "price":"299.99"
      },
      {
         "make":"EVSCOOT",
         "description":"Folding electric velocity+ scooter",
         "price":"599.99"
      }
   ]
}
```

また、次のように逆の方法によってキー/値ペアで出力を作成することも可能です。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-key-value-map-reversed.png)