# 出力で目的のエレメントを使用

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

ベータ版コンテンツ

異なる子を持つエレメントを同じ出力エレメントにマッピングします。

## 始める前に

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

## このタスクについて

この例では、自転車とスクーターの販売情報が含まれている入力JSONファイルがあるとします。この情報はbicycleエレメントとscooterエレメントに分割されており、それぞれ異なる子が含まれています。出力では、項目によって異なる子を持つ可能性がある単一のdetailsエレメントにその情報をすべて含めたいとします。

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

```
[
    {
        "sku": "AB4589",
        "price": 899.99,
        "bicycle": {
            "make": "MBIKE",
            "seat": "ergon",
            "derailleur": "shimano"
        }
    },
    {
        "sku": "DQ5678",
        "price": 899.99,
        "bicycle": {
            "make": "WBIKE",
            "seat": "selle italia",
            "derailleur": "sram"
        }
    },
    {
        "sku": "MF5612",
        "price": 399.99,
        "scooter": {
            "make": "ESCOOT",
            "maxWeight": 70
        }
    },
    {
        "sku": "MF5612",
        "price": 399.99,
        "scooter": {
            "make": "KSCOOT",
            "maxWeight": 50
        }
    }
]
```

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

```
[
    {
        "sku": "",
        "price": 899.99,
        "details": {
            "bicycle": "",
            "seat": "",
            "derailleur": ""
        }
    },
    {
        "sku": "",
        "price": 399.99,
        "details": {
            "scooter": "",
            "maxWeight": 70
        }
    }
]
```

## 手順

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

   detailsがChoiceエレメントであることがわかります。ここにはSequenceエレメントが2つ含まれています。この2つは、detailsの子エレメントの可能性があるセットです。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-choice-structure.png)
2. [Read Only] (読み取り専用)をクリックし、ドロップダウンリストで[Editable] (編集可能)を選択します。
3. sequenceをクリックし、[Name] (名前)フィールドにあるsequenceをbicycleに置き換え、sequence\_1をscooterという名前に変更してストラクチャーを保存します。
4. 新しいDSQLマップを作成して入力ストラクチャーと出力ストラクチャーを追加します。
5. 次のエレメントをドラッグ＆ドロップしてマッピングします。
   * skuをskuへ
   * priceをpriceへ
   * bicycleをbicycle {@0}へ
   * bicycle.makeをbicycleへ
   * scooter.makeをscooterへ
   * maxWeightをmaxWeightへ

## タスクの結果

エレメントがマッピングされます。出力の選択肢であるbicycle {@0}とscooter {@1}をクリックすると、条件式が自動的に生成されたことがわかります。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-choice-map-2.png) たとえばIF (isPresent(bicycle))は、入力にbicycleエレメントが存在する場合のみdetails出力エレメントが最初の選択肢に一致することを示します。この例では、[Test Run] (テスト実行)によって次の結果が返されます。

```
[
   {
      "sku":"AB4589",
      "price":899.99,
      "details":{
         "bicycle":"MBIKE",
         "seat":"ergon",
         "derailleur":"shimano"
      }
   },
   {
      "sku":"DQ5678",
      "price":899.99,
      "details":{
         "bicycle":"WBIKE",
         "seat":"selle italia",
         "derailleur":"sram"
      }
   },
   {
      "sku":"MF5612",
      "price":399.99,
      "details":{
         "scooter":"ESCOOT",
         "maxWeight":70
      }
   },
   {
      "sku":"MF5612",
      "price":399.99,
      "details":{
         "scooter":"KSCOOT",
         "maxWeight":50
      }
   }
]
```