Dr.Sum Ver. 5.7から、CDataアダプターを使用することでJSON、XML形式のファイルや、Salesforce、KintoneからデータをDr.Sumに直接インポートしたり、CSVファイルに関数を使いながらインポートをすることが可能になりました!本記事ではCDataアダプターを使った「シンプルなJSONファイルとネストされたオブジェクト配列のJSONファイルのインポート」を紹介していきます。
提供しているCDataアダプターと接続確認済みのデータソースは以下をご参照ください。
- CDataアダプターを利用したインポートはDr.Sum Ver. 5.7より追加された機能です。本機能をお試しの際は現在利用中のバージョンをご確認ください。
CDataアダプターを使ったCSVファイルのインポートはこちらの記事で詳しくご紹介しております。
この機能でできること
Ver. 5.6以前はJSONファイルのインポートはできませんでしたが、ver. 5.7からCDataアダプターの利用で、標準機能で関数を使って加工しながらJSONファイルのインポートができるようになりました。CDataアダプターの接続文字列を指定することでネストされたオブジェクト配列のJSONファイルもインポート可能です。外部サービスのAPIで出力されるJSONファイルとの連携などDr.Sumに集約できるデータの幅が広がりました!
シンプルなJSONファイルのインポート
インポートするJSONファイル
以下のようなシンプルな構造のJSONファイルをインポートする設定をご紹介します。
{
"age": 20,
"gender": "M",
"first": "John",
"last": "Doe"
}
設定方法
CDataアダプターを使ったインポートの大まかな手順はデータソースによらず共通です。
以下のページよりJSONファイルのCDataアダプターをダウンロードし「cdata.jdbc.json.jar」をDr.Sumサーバーの任意のフォルダに配置します。
以下設定例と記事:「【Ver. 5.7から追加!】関数を使って加工しながらCSVインポートする」の「事前準備」「CDataアダプターを使ったCSVファイルのインポート設定」を参考に設定します。
設定例
- [JDBCドライバー情報]画面の[名前][ドライバー][フォーマット]は以下のように入力します。
名前 |
任意の名前 |
ドライバー |
cdata.jdbc.json.JSONDriver |
フォーマット |
jdbc:cdata:json:DataModel=Relational;URI=[uri]; |
- [uri]には、ファイルのパスを記載します。例) C:/temp/sample.json
- その他の接続オプションの指定が必要な場合は、CDataアダプター配置時にダウンロードしたZipファイル内の、helpフォルダーにあるhelp.htmを参照して「接続文字列オプション」の項をご参照ください。
VTB Creatorで関数を設定し新しく項目を作成することも可能です。画像では名と姓を連携した項目「氏名」を作成しています。プレビューで無事JSONファイルの参照、関数の設定ができていることが確認できますね!
- 使用できる関数は、CDataアダプター配置時にダウンロードしたZipファイル内の、helpフォルダーにあるhelp.htmの[SQL準拠]-[SQL関数]の項をご参照ください。
ネストされたオブジェクト配列のJSONファイルのインポート
インポートするJSONファイル
続いて以下のようなネストされたオブジェクト配列のJSONファイルをインポートする設定をご紹介します。
{
"people": [
{
"personal": {
"age": 20,
"gender": "M",
"name": {
"first": "John",
"last": "Doe"
}
},
"vehicles": [
{
"type": "car",
"model": "Honda Civic",
"insurance": {
"company": "ABC Insurance",
"policy_num": "12345"
},
"maintenance": [
{
"date": "07-17-2017",
"desc": "oil change"
},
{
"date": "01-03-2018",
"desc": "new tires"
}
]
},
{
"type": "truck",
"model": "Dodge Ram",
"insurance": {
"company": "ABC Insurance",
"policy_num": "12345"
},
"maintenance": [
{
"date": "08-27-2017",
"desc": "new tires"
},
{
"date": "01-08-2018",
"desc": "oil change"
}
]
}
],
"source": "internet"
},
{
"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"
}
]
},
{
"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"
}
]
}
設定方法
CDataアダプターでは、JSONファイルのモデル化パターン(DataModel)や配列構造(JSONPath)を、接続文字列として明示的に指定することで、ネストした配列オブジェクトも1つのテーブルとして解釈しながらインポートすることが可能です。
Dr.Sumでのインポート設定時には[JDBCドライバー情報]画面の[フォーマット]を以下のように設定します。
設定例
- [JDBCドライバー情報]画面の[フォーマット]を以下のように入力します。
フォーマット |
jdbc:cdata:json:DataModel=FlattenedDocuments;URI=[uri];JSONPath=’$.people;$.people.vehicles;$.people.vehicles.maintenance;’; |
- [uri]には、ファイルのパスを記載します。例) C:/temp/sample.json
- その他の接続オプションの指定が必要な場合は、CDataアダプター配置時にダウンロードしたZipファイル内の、helpフォルダーにあるhelp.htmを参照して「接続文字列オプション」の項をご参照ください。
ネストされたオブジェクト配列のJSONファイルも参照できましたね!
さいごに
本記事ではDr.Sum Ver. 5.7で可能になったCDataアダプターを使用した「シンプルなJSONファイルとネストされたオブジェクト配列のJSONファイルのインポート」をご紹介しました!CDataアダプターの利用でさらに活用できるデータの幅が広がったDr.Sum、ぜひご活用ください。