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、ぜひご活用ください。