階層ビルダトランスフォーメーションの例 リレーショナルデータを階層データに変換し、そのデータをターゲットファイルに階層形式で書き込むとします。
階層ビルダトランスフォーメーションを使用してデータを変換するには、次の手順を実行します。
1 階層スキーマを作成します。2 マッピングを作成します。3 階層ビルダトランスフォーメーションを設定します。4 ターゲットを設定します。5 マッピングを実行します。手順1.階層スキーマの作成 スキーマファイルを使用して出力データの階層を定義する階層スキーマを設定する必要があります。
次の例は、使用するスキーマ階層を示しています。
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.itemfield.com" targetNamespace="http://www.itemfield.com" elementFormDefault="qualified"> <xs:element name="Employees"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="0"/> <xs:element name="Address" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Employee" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="EmployeeID" type="xs:string" minOccurs="0"/> <xs:element name="Department" type="xs:string" minOccurs="0"/> <xs:element name="Subdivision" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Building" type="xs:string" minOccurs="0"/> <xs:element name="Room" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
次の例は、使用する1つ目の入力ファイルデータを示しています。
CompanyName,Address First National Bank,874 Louis Road Jackson Industry,13 Sydney Drive
次の例は、使用する2つ目の入力ファイルデータを示しています。
Name,EmployeeID,Department,Building,Room First National Bank,122,Credit,6,1532 First National Bank,261,Credit,6,2251 First National Bank,431,Credit,6,5312 Jackson Industry,3875,Manufacture,C,673 Jackson Industry,2837,Manufacture,B,211
データ統合 で、使用するスキーマ階層を持つ階層スキーマを作成します。
手順2.マッピングの作成 入力データを解析するには、マッピングで階層ビルダートランスフォーメーションを使用して階層入力のデータを変換します。
Mapping Designerで、2つのソースオブジェクトを追加します。これらのオブジェクトは、解析するデータファイルへのパスが格納されたフラットファイルです。次の図に、ソーストランスフォーメーションの1つを示します。
手順3.階層ビルダトランスフォーメーションの設定 階層ビルダートランスフォーメーションを追加し、NewHierarchyBuilderという名前を使用します。作成した階層スキーマを使用するようにこのトランスフォーメーションを設定します。
NewHierarchyBuilderトランスフォーメーションにソースオブジェクトを接続します。受信データをトランスフォーメーションの各フィールドにマッピングするには、NewHierarchyBuilderトランスフォーメーションを選択します。[受信フィールド] タブで、フィールド名の競合がないことを確認します。次の図に、入力フィールド選択を示します。
リレーショナルフィールドを階層出力にマッピングするには、[フィールドマッピング] タブでプライマリキーおよび外部キーを選択します。次に、階層出力のスキーマ要素にリンクするリレーショナルフィールドを選択します。
次の図に、フィールドマッピング選択を示します。
手順4.ターゲットを設定します フィールドのファイルターゲットオブジェクトを追加します。
次の画像に、最終のマッピングを示します。
手順5.マッピングを実行します マッピングを実行して、階層形式のデータをターゲットトランスフォーメーションに書き込みます。
次の例は、階層出力を示しています。
<Employees> <Name>First National Bank</Name> <Address>874 Louis Road</Address> <Employee> <EmployeeID>122</EmployeeID> <Department>Credit</Department> <Subdivision> <Building>6</Building> <Room>1532</Room> </Subdivision> </Employee> <Employee> <EmployeeID>261</EmployeeID> <Department>Credit</Department> <Subdivision> <Building>6</Building> <Room>2251</Room> </Subdivision> </Employee> <Employee> <EmployeeID>431</EmployeeID> <Department>Credit</Department> <Subdivision> <Building>6</Building> <Room>5312</Room> </Subdivision> </Employee> </Employees> <Employees> <Name>Jackson Industry</Name> <Address>13 Sydney Drive</Address> <Employee> <EmployeeID>3875</EmployeeID> <Department>Manufacture</Department> <Subdivision> <Building>C</Building> <Room>673</Room> </Subdivision> </Employee> <Employee> <EmployeeID>2837</EmployeeID> <Department>Manufacture</Department> <Subdivision> <Building>B</Building> <Room>211</Room> </Subdivision> </Employee> </Employees>