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

2つのループを1つのループにマッピング

集計ファンクションを使って2つの並列ループを1つのループにマージします。

始める前に

入力ストラクチャーと出力ストラクチャーを持つマップを作成済みであること。この例では、入力としてCustomerAddressを、出力としてCustomerCombinedAddressesを使います。これらのストラクチャーは、[Other Projects] (他のプロジェクト) > [Examples] (例) > [Structures] (ストラクチャー) > [Simple] (シンプル) > [Customer] (顧客)の下にあります。

このタスクについて

この例では、AddressAddressDetailという2つのループを持つ入力があり、出力にある1つのAddressループに両ループのエレメントをマッピングしたいとします。

このマップは、[Other Projects] (他のプロジェクト) > [Examples] (例) > [Maps] (マップ) > [Looping] (ルーピング) > [LoopMergeTwoLoops]にあります。

手順

  1. 入力Addressループを対応する出力ループにドラッグします。
    エレメントがマッピングされ、SimpleLoopファンクションが出力ルーピングエレメントに追加されます。
  2. 入力Detailエレメントを対応する出力にドラッグします。
  3. ダイアログボックスが開いたら、[Yes] (はい)をクリックします。
    ループ式とコンテキストを持つAgConcatが自動的に作成されます。マップをテストすると、Addressエレメントが反復されるたびに、入力エレメントの値がすべて出力Detailエレメントに含まれるようになります。1回だけのDetail反復の値がほしい場合は、フィルターを使う必要があります。
  4. SingleIndexファンクションを、NestedContextファンクションの下にあるループ式のFilter引数にドラッグ&ドロップします。
  5. LoopIndexファンクションをIndex引数にドラッグ&ドロップします。
  6. 出力AddressエレメントをLooping Output Element引数にドラッグ&ドロップします。
    これによって、Addressループのインデックスに基づいてDetailエレメントが反復のたびに1つの値のみ返すことが指定されます。たとえばAddressの最初の反復であれば、出力Detailsによって、AddressDetailsの最初の反復で入力Detailsの値が返されます。

タスクの結果

エレメントがマッピングされます。サンプル入力ファイルに基づいて出力を確認する場合は、[Test Run] (テスト実行)ボタンを使います。この例での出力は次のようになります。
<Customer>
  <Address>
    <Detail>Information about 123 Main Street</Detail>
    <Street>123 Main Street</Street>
    <City>Oakland</City>
    <State>CA</State>
  </Address>
  <Address>
    <Detail>Information about 456 Broadway Ave</Detail>
    <Street>456 Broadway Ave</Street>
    <City>Oakland</City>
    <State>CA</State>
  </Address>
  <Address>
    <Detail>Information about 67th Street</Detail>
    <Street>912 67th Street</Street>
    <City>Berkeley</City>
    <State>CA</State>
  </Address>
  <Address>
    <Detail>Information about 415 East Ave</Detail>
    <Street>415 East Ave</Street>
    <City>Oakland</City>
    <State>CA</State>
  </Address>
</Customer>

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

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