グループエレメントを使用してデータをマッピング
このシナリオでは、 補足データを結合するためにルックアップフローを起動に基づいて、tXMLMapの[Map Editor] (マップエディター)でエレメントを[group element] (グループエレメント)として設定し、出力データをグルーピングする方法を示します。tXMLMapを使って出力データをグルーピングする方法は、Talend Studioユーザーガイドをご覧ください。
このシナリオの目的は、顧客IDと顧客名情報を顧客の出身州に従ってグルーピングすることです。以下のファクターを考慮して、[Customer] (顧客)出力テーブルのXMLツリービューを再構築する必要があります。
-
顧客IDと顧客名情報をタグ付けするエレメントは、ループエレメントの下に置いてください。そうすることで、ループエレメントのサブエレメントとなります。
-
ループエレメントとそのサブエレメントは、グループエレメントに直接依存するようにしてください。
-
グルーピングの条件として使用される州の情報をタグ付けするエレメントは、グループエレメントに直接依存するようにしてください。
-
グループエレメントをルートエレメントにすることはできません。
この分析をベースに、出力データのXMLストラクチャーは次のようになります。customersノードがルートエレメントで、customerノードはグループエレメントとして設定され、出力データはLabelStateエレメントに従ってグルーピングされます。
グループエレメントを有効にするには、処理する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>