垂直フラット化
垂直フラット化クエリを使用すると、ドキュメントの配列を個別のテーブルのように取得することが可能です。
垂直フラット化クエリ構文
FROM 句では、ドット表記を使用してネストされた配列にドリルダウンできます。
SELECT * FROM [people.vehicles]
例
Raw データ のpeople コレクションのJSON 構造について考えてみましょう。以下はコレクションのオブジェクトです。
{
"people": [
{
"personal": {
"age": 24,
"gender": "F",
"name": {
"first": "Jane",
"last": "Roberts"
}
},
"vehicles": [
{
"type": "car",
"model": "Toyota Camry",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "05-11-2017",
"desc": "tires rotated"
},
{
"date": "11-03-2017",
"desc": ["oil change","fan belt replaced","coolant reservoir replaced"]
}
]
},
{
"type": "car",
"model": "Honda Accord",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "10-07-2017",
"desc": "new air filter"
},
{
"date": "01-13-2018",
"desc": "new brakes"
}
]
}
],
"source": "phone"
}
]
}
接続文字列
次の接続文字列を使用すると、connector はネストされたデータをパースしません。データはクエリを実行すると処理されます。デフォルトのFlattenObjects 機能により、トップレベルオブジェクトのプロパティはフラット化されます。ネストされたデータはJSON の集計として返されます。
URI=C:\people.txt;DataModel=Documents;JSONPath='$.people;'
クエリ
垂直フラット化ではvehicles 配列を別々のテーブルとして取得することを許可します。
SELECT * FROM [people.vehicles]このクエリは、次のデータセットを返します。
insurance.policy_num | maintenance | model | type |
12345 | [{"date":"07-17-2017","desc":"oil change"},{"date":"01-03-2018","desc":"new tires"}] | Honda Civic | car |
12345 | [{"date":"08-27-2017","desc":"new tires"},{"date":"01-08-2018","desc":"oil change"}] | Dodge Ram | truck |
98765 | [{"date":"05-11-2017","desc":"tires rotated"},{"date":"11-03-2017","desc":"oil change"}] | Toyota Camry | car |
98765 | [{"date":"10-07-2017","desc":"new air filter"},{"date":"01-13-2018","desc":"new brakes"}] | Honda Accord | car |