チュートリアルガイド > テーブルとXMLデータの変換チュートリアル > リレーショナルデータから階層データへの変換チュートリアル
 
リレーショナルデータから階層データへの変換チュートリアル
リレーショナルデータは通常、テーブルまたはビューとしてリレーショナルデータベースに保存されます。階層データは通常、IMSなどの階層データベースにXMLデータとして、場合によってはテーブルまたはビューとして保存されます。
このチュートリアルでは、TDVに付属するExamplesプロジェクトの3つのテーブル(customers、orders、orderdetails)を使用して、XMLドキュメントの結果を生成します。
変換するビューの追加
データの反復と選択に使用するloopとフィルターの追加
loopとoutの間のリンクの作成
モデルへのloop2の追加
モデルへのloop3の追加
直接データフローへのリンクの追加
変換の実行
変換するビューの追加
TDVに付属するExampleプロジェクトの3つのテーブル(customers、orders、orderdetails)を追加します。
リレーショナルデータをXMLデータに変換するには
1.Studioを開きます。
2.Studioのリソースツリーで[Shared(共有)]を選択します。
3.右クリックして[New Transformation(新しい変換)]を選択します。
4.[Any-AnyTransform(Any-Any変換)]を選択して[Next(次へ)]をクリックします。
5.[Transformation Name(変換名)]フィールドに「TBL2XML」と入力します。
6.[Finish(終了)]をクリックします。
[Transformation Editor(変換エディター)]が開き、[Model(モデル)]タブが表示されます。
7.Studioのリソースツリーで[Shared(共有)] > examplesを展開します。
8.[Shared(共有)] > examples > ds_ordersを展開します。
9.次のビューを選択し、リソースツリーから[Transformation Editor(変換エディター)]の[Model(モデル)]タブにドラッグします。
- customers
- orders
- orderdetails
10.変換を保存します。
データの反復と選択に使用するloopとフィルターの追加
この例では、変換するデータの繰り返し処理および選択にプログラムのloopを利用します。
loopとフィルターを追加するには
1.[Loop Link Mode(loopリンクモード)]を選択します。または、エディター上部のリンク作成アイコンのいずれかが押されている状態でShiftキーを押しながら操作します([Loop Link Mode(loopリンクモード)]アイコン選択ショートカットキー: Shift+Minus)。
2.customersに表示されているresult列の横にある操作ハンドルを選択し、outまで線をドラッグします。
3.変換を保存します。
4.loopとoutの間の接続を削除します。
5.outコンテナーで、customersの横にある操作ハンドルを選択して右クリックします。
6.[Delete “customers”(「customers」の削除)]を選択します。
7.outをクリックして選択します。
8.outを右クリックして、[Add Parameter(パラメーターの追加)]を選択します。
9.[Browse(参照)]を選択します。
10.XMLdefinitionSetを参照します。
11.右側の[Show(表示)]ドロップダウンリストで[Type(種類)]を選択します。
12.リストからCustomersを選択します。
13.[OK]をクリックします。
デフォルトでは、XML階層は折りたたまれています。
14.foo:customer、foo:orders、foo:orderitemsの順に横の矢印をクリックして、階層を展開します。
15.[Assign Link Mode(リンク割り当てモード)]をクリックします。または、エディター上部のリンク作成アイコンのいずれかが押されている状態でCtrlキーを押しながら操作します(Ctrl+Minus)。
16.loopのcustomersの横にある操作ハンドルをクリックして、foo:customerまで線をドラッグします。
17.変換を保存します。
loopとoutの間のリンクの作成
loopリンクを作成するには
1.エディターの上部にある[Assign Link Mode(リンク割り当てモード)]アイコンをクリックします。
2.CustomerIDをfoo:customerIDにリンクします。
3.CompanyNameをfoo:CustomerNameにリンクします。
4.変換を保存します。
モデルへのloop2の追加
loop2を追加するには
1.[Loop Link Mode(loopリンクモード)]を選択します。
2.ordersテーブルのresult列の横にある操作ハンドルをクリックして、outのfoo:orders列に接続します。
3.loop2をダブルクリックします。
4.フィールドに次のように入力します。
CusID = orders/CustomerID
5.[Close(閉じる)]をクリックします。
6.変換を保存します。
モデルへのloop3の追加
loop3を追加するには
1.[Loop Link Mode(loopリンクモード)]を選択します。
2.orderdetailsのresultをfoo:orderItemsにリンクします。
3.loop3をダブルクリックします。
4.フィールドに次のように入力します。
OrdID = orderdetails/OrderID
5.変換を保存します。
直接データフローへのリンクの追加
特定の列のデータをリンクすると、データの流れを調整して、変換するデータを選択するのに役立ちます。
リンクを追加するには
1.変換を開きます。
2.次の列間のリンクを検証または作成します。
 
リンク元の演算子
リンク元の列
リンク先の演算子
リンク先の列
loop
customers
out
out.foo.customer
CustomerID
out
out.foo.customerID
CompanyName
out
foo.customerName
CustomerID
loop2
CusID
loop2
orders
out
out.foo.orders [ ]
OrderID
out
out.foo.orderID
OrderID
loop3
loop3.OrdID
loop3
orderdetails
out
foo.orderitems [ ]
OrderDetailID
out
foo.orderitemID
3.変換を保存します。
変換の実行
リレーショナルデータをXML構造の階層データに変える変換を実行すると、その結果を基に実行時に何が生成されるかを把握できます。
変換を実行するには
1.変換を実行して、生成されたXMLコードを確認します([Execute(実行)]ボタンをクリックします)。
2.[Result(結果)]パネルの[Details(詳細)]をクリックして、[Value(値)]ウィンドウを表示します。
3.終了したら、[OK]をクリックして[Value(値)]ウィンドウを閉じます。
4.変換を保存して閉じます。