ループを非ループエレメントにマッピング - 7.3

Talend Data Mapperファンクションリファレンスガイド

Version
7.3
Language
日本語
Product
Talend Big Data Platform
Talend Data Fabric
Talend Data Management Platform
Talend Data Services Platform
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > ジョブデザイン
Last publication date
2023-01-09
ループから非ループエレメントに値を集約させます。

始める前に

入力ストラクチャーと出力ストラクチャーを持つマップを作成済みであること。この例ではネストされたループをマッピングと同じマップを使います。

このタスクについて

この例では、各Itemsループにある出力PartNumエレメントの数を返すよう出力TotalItemsエレメントを、そして出力Numエレメントの数を返すよう出力TotalNoticesエレメントをそれぞれ設定したいとします。

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

手順

  1. オプション: 前の例で作成したマップを使用している場合は、入力PartNumberエレメントを出力PartNumにドラッグします。
    マップは次のようになります。
  2. AgCountファンクションをドラッグして出力TotalItemsエレメントにドロップします。
  3. 出力PartNumAgCountにドラッグします。
    集約のコンテキストを提供するためにはループ式が必要です。この場合はLoopCopyファンクションが自動的に追加され、このエレメントがPartNumエレメントと同じルーピングを使用する必要があることが示されます。
  4. AgCountファンクションをドラッグして出力TotalNoticesエレメントにドロップします。
  5. 出力NumAgCountにドラッグします。
    LoopCopyファンクションが自動的に追加されます。

タスクの結果

ループが集約されます。サンプル入力ファイルに基づいて出力を確認する場合は、[Test Run] (テスト実行)ボタンを使います。この例での出力は次のようになります。
<Notices>
  <Notice>
    <Num>1</Num>
    <Name>Francis Upton</Name>
    <Items>
      <PartNum>1A45</PartNum>
    </Items>
    <Items>
      <PartNum>2</PartNum>
    </Items>
    <TotalItems>2</TotalItems>
  </Notice>
  <Notice>
    <Num>2</Num>
    <Name>Francis Upton</Name>
    <Items>
      <PartNum>5TTT9</PartNum>
    </Items>
    <Items>
      <PartNum>123</PartNum>
    </Items>
    <TotalItems>2</TotalItems>
  </Notice>
  <Notice>
    <Num>2</Num>
    <Name>Martha Lyman</Name>
    <Items>
      <PartNum>K4223</PartNum>
    </Items>
    <Items>
      <PartNum>K4552</PartNum>
    </Items>
    <TotalItems>2</TotalItems>
  </Notice>
  <TotalNotices>3</TotalNotices>
</Notices>