# グループエレメントを使用してデータをマッピング

このシナリオでは、 [補足データを結合するためにルックアップフローを起動](https://help.qlik.com/talend/ja-JP/components/8.0/txmlmap/txmlmap-tfileinputxml-tlogrow-tlogrow-launching-lookup-flow-to-join-complementary-data-standard-component-based-on)に基づいて、tXMLMapの[Map Editor] (マップエディター)でエレメントを[group element] (グループエレメント)として設定し、出力データをグルーピングする方法を示します。tXMLMapを使って出力データをグルーピングする方法は、[出力データをグルーピング](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/grouping-output-data)をご覧ください。

![ジョブの説明。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tXMLMap1.png)

このシナリオの目的は、顧客IDと顧客名情報を顧客の出身州に従ってグルーピングすることです。以下のファクターを考慮して、[Customer] (顧客)出力テーブルのXMLツリービューを再構築する必要があります。

* 顧客IDと顧客名情報をタグ付けするエレメントは、ループエレメントの下に置いてください。そうすることで、ループエレメントのサブエレメントとなります。

* ループエレメントとそのサブエレメントは、グループエレメントに直接依存するようにしてください。

* グルーピングの条件として使用される州の情報をタグ付けするエレメントは、グループエレメントに直接依存するようにしてください。

* グループエレメントをルートエレメントにすることはできません。

この分析をベースに、出力データのXMLストラクチャーは次のようになります。customersノードがルートエレメントで、customerノードはグループエレメントとして設定され、出力データはLabelStateエレメントに従ってグルーピングされます。

![\[Customer\] (顧客)出力テーブル。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tXMLMapGroup1.png)

グループエレメントを有効にするには、処理するXMLデータをソートしておく必要があります。たとえば、グルーピングの条件として使用するエレメントにXMLツールを使用します。このサンプルでは、同じ州IDを持つ顧客はまとめる必要があります。XMLファイルCustomer.xml内の入力データは、次のようになります。

```
<?xml version="1.0" encoding="ISO-8859-15"?>
			<Customers>
			<Customer RegisterTime="2001-01-17 06:26:40.000">
			<Name>
			<id>1</id>
			<CustomerName>Griffith Paving and Sealcoatin</CustomerName>
			</Name>
			<Address>
			<CustomerAddress>talend@apres91</CustomerAddress>
			<idState>2</idState>
			</Address>
			<Revenue>
			<Sum1>67852</Sum1>
			</Revenue>
			</Customer>
			<Customer RegisterTime="1987-02-23 17:33:20.000">
			<Name>
			<id>3</id>
			<CustomerName>Glenn Oaks Office Supplies</CustomerName>
			</Name>
			<Address>
			<CustomerAddress>1859 Green Bay Rd.</CustomerAddress>
			<idState>2</idState>
			</Address>
			<Revenue>
			<Sum1>1225.</Sum1>
			</Revenue>
			</Customer>
			<Customer RegisterTime="2002-06-07 09:40:00.000">
			<Name>
			<id>2</id>
			<CustomerName>Bill's Dive Shop</CustomerName>
			</Name>
			<Address>
			<CustomerAddress>511 Maple Ave. Apt. 1B</CustomerAddress>
			<idState>3</idState>
			</Address>
			<Revenue>
			<Sum1>88792</Sum1>
			</Revenue>
			</Customer>
			<Customer RegisterTime="1992-04-28 23:26:40.000">
			<Name>
			<id>4</id>
			<CustomerName>DBN Bank</CustomerName>
			</Name>
			<Address>
			<CustomerAddress>456 Grossman Ln.</CustomerAddress>
			<idState>3</idState>
			</Address>
			<Revenue>
			<Sum1>64493</Sum1>
			</Revenue>
			</Customer>
			</Customers>
```

## グループエレメントを使用してデータをマッピング

### 手順

1. Talend Studioで、[補足データを結合するためにルックアップフローを起動](https://help.qlik.com/talend/ja-JP/components/8.0/txmlmap/txmlmap-tfileinputxml-tlogrow-tlogrow-launching-lookup-flow-to-join-complementary-data-standard-component-based-on)内で使われているジョブを開いてデザインワークスペースに表示し、tXMLMapコンポーネントをダブルクリックして[Map Editor] (マップエディター)を開きます。
2. Customer出力テーブルのXMLツリービューでcustomer (loop)ノードを右クリックし、コンテキストメニューから[Delete] (削除)を選択します。

   ![customer (loop)ノード。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tXMLMapGroup2.png)

   customersルートノードの下にあるエレメントがすべて削除されます。これで、目的の出力データのグルーピングに使うXMLツリービューを再構築できるようになります。
3. customersルートノードを右クリックし、コンテキストメニューで[Create Sub-Element] (サブエレメントの作成)を選択します。ポップアップダイアログボックスで、新しいサブエレメントの名前を入力します。この例では、customerです。
4. [OK]をクリックして変更を有効にし、ダイアログボックスを閉じます。
5. row2ルックアップ入力テーブルで LabelStateノードを選択し、出力テーブルのcustomerノードにドロップします。ポップアップダイアログボックスで[Create as sub-element of target node] (ターゲットノードのサブエレメントとして作成)を選択し、[OK]をクリックしてダイアログボックスを閉じます。
6. 出力テーブルのcustomerノードを右クリックし、コンテキストメニューで[Create Sub-Element] (サブエレメントの作成)を選択します。ポップアップダイアログボックスで、新しいサブエレメントの名前を入力します。この例ではNameです。
7. [OK]をクリックして変更を有効にし、ダイアログボックスを閉じます。
8. row1メイン入力テーブルでノードidとCustomerNameを選択し、出力テーブルのNameノードにドロップします。ポップアップダイアログボックスで[Create as sub-element of target node] (ターゲットノードのサブエレメントとして作成)を選択し、[OK]をクリックしてダイアログボックスを閉じます。
9. 出力テーブルでNameノードを右クリックし、コンテキストメニューから[As loop element] (ループエレメントとして) を選択してループエレメントとして設定し、次にcustomerノードを右クリックして[As group element] (グループエレメントとして)を選択して、LabelStateエレメントに従って出力データをグルーピングします。

   ![グルーピングエレメント。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tXMLMapGroup4.png)
10. [OK]をクリックして変更を検証し、マップエディターを閉じます。
11. Ctrl + Sを押してジョブを保存し、F6を押してジョブを実行します。

### タスクの結果

ループに含まれているidエレメントとCustomerNameエレメントは、LabelStateエレメントに従ってグルーピングされます。グループエレメントのcustomerは、各グループの開始と終了にタグを付けます。 ![ジョブの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/Use_Case_tXMLMapGroup_result.png)