フラット化されたドキュメントモデル
XML データ全体に単純にアクセスする必要があるユーザーにとっては、データを単一テーブルにフラット化することは最善のオプションです。このモードでは、connector はストリーミングを使用し、クエリごとにXML データを1回だけパースします。
オブジェクト配列を単一テーブルに結合
DataModel を"FlattenedDocuments" に設定すると、connector はオブジェクト配列ごとに別のテーブルを返しますが、暗黙的に親テーブルに結合します。ネストされた任意の兄弟XPath 値(同じ高さの子パス)は、SQL CROSS JOIN として扱われます。
例
以下は、Raw データ のサンプルドキュメントと、XPaths /root/people、/root/people/vehicles、/root/people/vehicles/maintenance に基づく解析のサンプルクエリとその結果です。これは、暗黙的にvehicles 要素をpeople 要素と結合し、暗黙的にvehicles 要素をmaintenance 要素と結合します。
接続文字列
次の接続文字列を使用して、この例ではRaw データ をクエリします。
URI=C:\people.txt;DataModel=FlattenedDocuments;XPath='/root/people;/root/people/vehicles;/root/people/vehicles/maintenance;'
クエリ
次のクエリは、各people 要素のネストされた要素をドリルします。XPath プロパティはXML パスとしてvehicles ノードを含んだため、vehicle の要素を明示的にクエリできます。
SELECT
[personal.age] AS age,
[personal.gender] AS gender,
[personal.name.first] AS name_first,
[personal.name.last] AS name_last,
[source],
[type],
[model],
[insurance.company] AS ins_company,
[insurance.policy_num] AS ins_policy_num,
[date] AS maint_date,
[desc] AS maint_desc
FROM
[people]
結果
記述されたパスに基づいて水平および垂直フラット化を行うと、各vehicle 要素はその親people 要素に暗黙的に結合され、各maintenance 要素はその親vehicle 要素に暗黙的に結合されます。
age | gender | first_name | last_name | source | type | model | ins_company | ins_policy_num | maint_date | maint_desc | |
20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2017-07-17 | oil change | |
20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2018-01-03 | new tires | |
20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2017-08-27 | new tires | |
20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2018-01-08 | oil change | |
24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-05-11 | tires rotated | |
24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-11-03 | oil change | |
24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2017-10-07 | new air filter | |
24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2018-01-13 | new brakes |
関連項目
- 自動スキーマ検出:テーブルスキーマに報告されたカラムを設定します。
- フリーフォームクエリ:ドット表記を使用して、ネストされたデータを選択します。
- 垂直フラット化:ネストされたデータを別々のテーブルとしてクエリします。
- XML 関数:クライアント側の集計と変換を実行するために返されたデータを操作します。