メイン コンテンツをスキップする 補完的コンテンツへスキップ

DSQLマップでループを分割

Availability-noteBeta
複数のループを1つのループにマッピングします。

始める前に

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

このタスクについて

この例では、同じJSONファイル内にある別々の2つのループからデータを抽出し、出力にある1つのループにマッピングするDSQLマップを作成します。 入力データは次のようになります。
{
    "bicycles": [
        {
            "make": "MBIKE",
            "description": "27.5 inch electric mountain bike",
            "color": "blue",
            "price": 899.99
        },
        {
            "make": "EBIKE",
            "description": "Electric hybrid bike",
            "color": "grey/green",
            "price": 999.99
        },
        {
            "make": "WBIKE",
            "description": "Women's road bike",
            "color": "white",
            "price": 299.99
        }
    ],
    "scooters": [
        {
            "make": "ESCOOT",
            "description": "Camou electric scooter",
            "color": "black",
            "price": 749
        },
        {
            "make": "EVSCOOT",
            "description": "Folding electric velocity+ scooter",
            "color": "black",
            "price": 599.99
        },
        {
            "make": "KSCOOT",
            "description": "24 volt kid scooter",
            "color": "white",
            "price": 299.99
        }
    ]
}
出力ストラクチャーは次のようになります。
{
    "items": [
        {
            "make": "",
            "description": "",
            "price": ""
        }
    ]
}

手順

  1. 新しいDSQLマップを作成して入力ストラクチャーと出力ストラクチャーを追加します。
    ルートエレメント間に最初のマッピングが自動的に作成されます。出力ストラクチャーのルートエレメントに、対応するData Shaping Query Languageの式が表示されます。
  2. 出力ストラクチャーでitemsエレメントを右クリックし、[Split] (分割)をクリックします。

    これによって同一の新しいループが作成されます。これはbicycle入力エレメントとscooters入力エレメントをマッピングするために必要です。分割後、マップ内のストラクチャーに別々のitemsループが2つ表示されても、出力には両方のループのコンテンツを持つitems配列が1つだけ含まれるようになります。

    この変更はマップにのみ適用され、ストラクチャー自体にはプロパゲートされません。新しいループを右クリックし、[Go to Structure Element] (ストラクチャーエレメントに移動)をクリックしてストラクチャーを開くと、そのストラクチャーが変化していないことがわかります。

  3. 最初のitemsループにbicycles入力エレメントを、2番目のループにbicyclesエレメントをドラッグ&ドロップします。
    情報メモヒント: 必要であれば、分割エレメントを右クリックして[Move Up] (上に移動)[Move Down] (下に移動)[Delete] (削除)をクリックすることで、その分割エレメントを移動または削除できます。

タスクの結果

マップが設定され、[Test Run] (テスト実行)機能を使った結果をチェックできるようになります。この例では、次の結果が返されます。
{
   "items":[
      {
         "make":"MBIKE",
         "description":"27.5 inch electric mountain bike",
         "price":"899.99"
      },
      {
         "make":"EBIKE",
         "description":"Electric hybrid bike",
         "price":"999.99"
      },
      {
         "make":"WBIKE",
         "description":"Women's road bike",
         "price":"299.99"
      },
      {
         "make":"ESCOOT",
         "description":"Camou electric scooter",
         "price":"749.0"
      },
      {
         "make":"EVSCOOT",
         "description":"Folding electric velocity+ scooter",
         "price":"599.99"
      },
      {
         "make":"KSCOOT",
         "description":"24 volt kid scooter",
         "price":"299.99"
      }
   ]
}
また、[DSQL Script] (DSQL スクリプト)ビューで、UNION ALL句を使ったData Shaping Query Languageでどのように処理されるかを確認することもできます。詳細は、TalendData Shaping Languageリファレンスガイドをご覧ください。この例では、次のスクリプトが生成されます。
FROM itemsbycategory
SELECT {
   items = (
      FROM bicycles
      SELECT {
         make = make,
         description = description,
         price = price
      }
      UNION ALL
      FROM scooters
      SELECT {
         make = make,
         description = description,
         price = price
      }
   )
}

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。