# 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. マップを作成し、入力ストラクチャーと出力ストラクチャーを追加します。
   ### 例

   ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/generate_and_edit_agconcat_expression_01_map.png)
2. 入力Aエレメントを出力Aエレメントにドラッグします。

   出力rowエレメントにループ式が自動作成されます。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/generate_and_edit_agconcat_expression_02_simpleloop.png)
3. 入力Bエレメントを出力Bエレメントにドラッグします。

   このアクションによって、入力Bエレメントのルーピングコンテキストが現在の出力ルーピングコンテキストと互換性がないという競合が作成されます。
4. [Generate AgConcat value expression on out$/root/row/B] (out$/root/row/BでAgCocat値式を生成)を選択し、[OK]をクリックします。

   ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/generate_and_edit_agconcat_expression_03_loop_dialog.png)

   出力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番目の値のみ返されるようになります。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/generate_and_edit_agconcat_expression_04_auto_filter.png)

## タスクの結果

マップが設定されたので、[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>
```