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

AgConcat式の生成と設定

Talend Data Mapperは、互換性のないループを処理するためにAgConcat式を自動生成できます。

このタスクについて

この例では、入力として次のXMLサンプルを使います:
<root>
	<loopA>
		<A>a1</A>
		<loopB>
			<B>b11</B>
		</loopB>
		<loopB>
			<B>b12</B>
		</loopB>
		<loopC>
			<C>c11</C>
		</loopC>
		<loopC>
			<C>c12</C>
		</loopC>
	</loopA>
	<loopA>
		<A>a2</A>
		<loopB>
			<B>b21</B>
		</loopB>
		<loopB>
			<B>b22</B>
		</loopB>
		<loopC>
			<C>c21</C>
		</loopC>
		<loopC>
			<C>c22</C>
		</loopC>
	</loopA>
</root>
XML出力ストラクチャーは以下のように定義されています:
root
	row (0:*)
		A
		B
		C1
		C2

手順

  1. マップを作成し、入力ストラクチャーと出力ストラクチャーを追加します。

  2. 入力Aエレメントを出力Aエレメントにドラッグします。
    出力rowエレメントにループ式が自動作成されます。
  3. 入力Bエレメントを出力Bエレメントにドラッグします。
    このアクションによって、入力Bエレメントのルーピングコンテキストが現在の出力ルーピングコンテキストと互換性がないという競合が作成されます。
  4. [Generate AgConcat value expression on out$/root/row/B] (out$/root/row/BでAgCocat値式を生成)を選択し、[OK]をクリックします。
    出力BエレメントにAgConcatファンクションが自動的に追加されます。
  5. 入力Cエレメントを出力C1エレメントにドラッグした後、[Generate AgConcat value expression on out$/root/row/C1] (out$/root/row/C1でAgConcat値式を生成)選択し、[OK]をクリックします。
  6. AgConcatファンクションのFilter引数にSingleIndexファンクションをドロップします。
    これによって、出力C1エレメントが入力Cエレメントの最初の値のみを返すよう指定できるようになります。
  7. 入力Cエレメントを出力C2エレメントにドラッグした後、[Generate AgConcat value expression on out$/root/row/C2] (out$/root/row/C2でAgConcat値式を生成)選択し、[OK]をクリックします。
    兄弟であるC1エレメントにはフィルターが含まれているため、一致するフィルターがC2へ自動的に追加され、入力Cエレメントの2番目の値のみ返されるようになります。

タスクの結果

マップが設定されたので、[Test Run] (テスト実行)オプションを使って結果を確認できます。この例では次のようになります:
<root>
  <row>
    <A>a1</A>
    <B>b11b12</B>
    <C1>c11</C1>
    <C2>c12</C2>
  </row>
  <row>
    <A>a2</A>
    <B>b21b22</B>
    <C1>c21</C1>
    <C2>c22</C2>
  </row>
</root>

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

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