CData Python Connector for JSON

Build 22.0.8479

フラット化されたドキュメントモデル

JSON データ全体に単純にアクセスする必要があるユーザーにとっては、データを単一テーブルにフラット化することは最善のオプションです。このモードでは、本製品 はストリーミングを使用し、クエリごとにJSON データを1回だけパースします。

オブジェクト配列を単一テーブルに結合

DataModel を"FlattenedDocuments" に設定すると、ネストされたJSONPath 値はSQL JOIN と同じ方法で動作します。ネストされた任意の兄弟JSONPath 値(同じ高さの子パス)は、SQL CROSS JOIN として扱われます。

以下は、Raw データ のサンプルドキュメントと、JSON パス$.people、$.people.vehicles、$.people.vehicles.maintenance に基づく解析のサンプルクエリとその結果です。これは、暗黙的にvehicles コレクションをpeople コレクションと結合し、暗黙的にvehicles コレクションをmaintenance コレクションと結合します。

接続文字列

次の接続文字列を使用して、この例ではRaw データ をクエリします。

URI=C:\people.txt;DataModel=FlattenedDocuments;JSONPath='$.people;$.people.vehicles;$.people.vehicles.maintenance;'

クエリ

次のクエリは、各people オブジェクトのネストされたエレメントをドリルします。JSONPath プロパティはvehicles コレクションをJSON パスとして含んだため、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 オブジェクトに暗黙的に結合されます。

agegenderfirst_namelast_namesourcetypemodelins_companyins_policy_nummaint_datemaint_desc
20MJohnDoeinternetcarHonda CivicABC Insurance123452017-07-17oil change
20MJohnDoeinternetcarHonda CivicABC Insurance123452018-01-03new tires
20MJohnDoeinternettruckDodge RamABC Insurance123452017-08-27new tires
20MJohnDoeinternettruckDodge RamABC Insurance123452018-01-08oil change
24FJaneRobertsphonecarToyota CamryCar Insurance987652017-05-11tires rotated
24FJaneRobertsphonecarToyota CamryCar Insurance987652017-11-03oil change
24FJaneRobertsphonecarHonda AccordCar Insurance987652017-10-07new air filter
24FJaneRobertsphonecarHonda AccordCar Insurance987652018-01-13new brakes

関連項目

  • 自動スキーマ検出:テーブルスキーマに報告されたカラムを設定します。
  • フリーフォームクエリ:ドット表記を使用して、ネストされたデータを選択します。
  • 垂直フラット化:ネストされたオブジェクト配列に別のテーブルとしてアクセスします。
  • JSON 関数:クライアント側の集計と変換を実行するために返されたデータを操作します。

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479