トップレベルのドキュメントモデル
データのトップレベルドキュメントビューを使用すると、トップレベルの要素にすぐにアクセスできます。connector は、集計にネストされた要素を単一のカラムとして返します。
考慮すべき一つの側面はパフォーマンスです。ネストされた要素を処理してパースする時間とリソースを控えます。connector は、データを読み込むためにストリーミングを使用して、返されたデータを一度パースします。もう一つ考慮すべきは、ネストされた親要素に格納されているデータにアクセスする必要があることと、ツールやアプリケーションがXML を処理する能力です。
トップレベルドキュメントビューのモデリング
DataModel が"Document"(デフォルト)に設定されている場合、connector はデフォルトでトップレベルの要素である単一の要素のみをスキャンします。デフォルトのオブジェクトフラット化により、トップレベルの要素はカラムとして利用可能です。ネストされた要素は集計されたXML として返されます。
XPath を設定すると、トップレベル以外の要素を指定できます。
例
以下は、Raw データ のサンプルドキュメントに基づいたサンプルクエリとその結果です。クエリの結果、XPath "/root/people" に基づいた単一の"people" テーブルが作成されます。
接続文字列
DataModel 接続プロパティを"Document" に設定して次のクエリを実行し、サンプル結果セットを表示します。connector は以下のXPath 値のみをスキャンします。
URI=C:\people.txt;DataModel=Document;XPath='/root/people';
クエリ
次のクエリは、トップレベルの要素と車両要素のサブ要素を結果にプルします。
SELECT
[personal.age] AS age,
[personal.gender] AS gender,
[personal.name.first] AS name_first,
[personal.name.last] AS name_last,
[source],
[vehicles]
FROM
[people]
結果
データのドキュメントビューでは、personal 要素が4カラムにフラット化され、source とvehicles 要素が個別のカラムとして返され、結果として6カラムのテーブルが作成されます。
age | gender | name_first | name_last | source | vehicles | |
20 | M | John | Doe | internet | <vehicles><type>car</type><model>Honda Civic</model><insurance><company>ABC Insurance</company><policy_num>12345</policy_num></insurance><features>sunroof</features><features>rims</features><maintenance><date>07-17-2017</date><desc>oil change</desc></maintenance><maintenance><date>01-03-2018</date><desc>new tires</desc></maintenance></vehicles><vehicles><type>truck</type><model>Dodge Ram</model><insurance><company>ABC Insurance</company><policy_num>12345</policy_num></insurance><features>lift kit</features><features>tow package</features><maintenance><date>08-27-2017</date><desc>new tires</desc></maintenance><maintenance><date>01-08-2018</date><desc>oil change</desc></maintenance></vehicles> | |
24 | F | Jane | Roberts | phone | <vehicles><type>car</type><model>Toyota Camry</model><insurance><company>Car Insurance</company><policy_num>98765</policy_num></insurance><features>upgraded stereo</features><maintenance><date>05-11-2017</date><desc>tires rotated</desc></maintenance><maintenance><date>11-03-2017</date><desc>oil change</desc></maintenance></vehicles><vehicles><type>car</type><model>Honda Accord</model><insurance><company>Car Insurance</company><policy_num>98765</policy_num></insurance><features>custom paint</features><features>custom wheels</features><maintenance><date>10-07-2017</date><desc>new air filter</desc></maintenance><maintenance><date>01-13-2018</date><desc>new brakes</desc></maintenance></vehicles> |
関連項目
- 自動スキーマ検出:水平フラット化を使用してカラム検出を設定します。
- フリーフォームクエリ:ドット表記を使用して、ネストされたデータを選択します。
- 垂直フラット化:ネストされたデータを別々のテーブルとしてクエリします。
- XML 関数:クライアント側の集計と変換を実行するために返されたデータを操作します。