トップレベルのドキュメントモデル
データのトップレベルドキュメントビューを使用すると、トップレベルのエレメントにすぐにアクセスできます。本製品 は、集計にネストされたエレメントを単一のカラムとして返します。
考慮すべき一つの側面はパフォーマンスです。ネストされたエレメントを処理してパースする時間とリソースを控えます。本製品 は、データを読み込むためにストリーミングを使用して、返されたデータを一度パースします。もう一つ考慮すべきは、ネストされた親エレメントに格納されているデータにアクセスする必要があることと、ツールやアプリケーションがJSON またはXML を処理する能力です。
トップレベルドキュメントビューのモデリング
DataModel が"Document"(デフォルト)に設定されている場合、本製品 はデフォルトでトップレベルのエレメントである単一のエレメントのみをスキャンします。デフォルトのオブジェクトフラット化により、トップレベルのエレメントはカラムとして利用可能です。ネストされたエレメントは集計として返されます。
XPath を設定すると、トップレベル以外のエレメントを指定できます。
例
以下は、Raw データ のサンプルドキュメントに基づいたサンプルクエリとその結果です。クエリの結果、XPath "/root/people" に基づいた単一の"people" テーブルが作成されます。
接続文字列
DataModel 接続プロパティを"Document" に設定して次のクエリを実行し、サンプル結果セットを表示します。本製品 は以下のXPath 値のみをスキャンします。
URI=C:\people.txt;Format=XML;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 関数 およびJSON 関数:クライアント側の集計と変換を実行するために返されたデータを操作します。