CData コネクタの活用 MongoDB 接続

## はじめに
[CData](https://www.cdata.com/jp/drivers/) は様々なデータソースに接続可能なコネクタを提供しています。以前に [Active Directory](https://qiita.com/ExtremeCarvFJ/items/b38076e093e20d6192a8)、[SharePoint]( https://qiita.com/ExtremeCarvFJ/items/e28555dfc041e5775bb5)、[Twitter]( https://qiita.com/ExtremeCarvFJ/items/7441bbd5340711846073) などへの接続を紹介しましたが、今回は MongoDB に接続してみたいと思います。
なお、下記手順は Windows 環境を前提としています。

## コネクタ
#### コネクタの入手
CData の MongoDB JDBC Driver 評価版を利用します。まずは下記 URL にアクセスし、対応データソースから MongoDB を選択します。その後、[JDBC] > [ダウンロード] > [ダウンロード評価版] > [ダウンロード Windows Setup (.exe)] の順に進み、MongoDBJDBCDriver.exe をダウンロードします。

https://www.cdata.com/jp/driver

MongoDBJDBCDriver.exe を実行すると、デフォルトで以下にファイルが解凍されます。
`C:\Program Files\CData\CData JDBC Driver for MongoDB 2022J J`
lib フォルダに以下のようなファイルが存在します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/ab6061c7-fe5c-4557-4ec5-1ba8c64902b2.png)

#### コネクタのインストール

ライセンスファイル cdata.mongodb.lic を zip ファイルに圧縮した後、cdata.jdbc.mongodb.lic.zip をcdata.jdbc.mongodb.lic.jar に名称変更します。プラグイン管理画面で .jar か .yfp ファイルしか登録できないことへの対応です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/7a7c1cfe-a533-33f8-cd85-1f2ef09640af.png)

Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、cdata.jdbc.mongodb.jar をドロップして追加した後、「さらに追加」を選択して、cdata.jdbc.mongodb.lic.jar を追加します。結果、以下のように、実行ファイルとライセンスファイルの両者を合わせて登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/1e084516-40ff-5017-81a0-fd8b98bf6986.png)

## データソース
Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、[新規データ接続] で [データソースを選択] から [データベース] を選択します。
新規接続の設定画面から、以下を参照に新規接続を作成します。

|項目|設定値|
|---|---|
|名前|MongoDB|
|データベースタイプ|一般 JDBC データソース|
|JDBC ドライバー|cdata.jdbc.mongodb.MongoDBDriver(MongoDB CData)|
|接続文字|jdbc:mongodb:AuthScheme=SCRAM-SHA-256;Server=localhost;User=demo;Password=password;Database=demo;|

AuthSchemeに関しては、各環境に合わせて適切な[認証方式]( https://www.mongodb.com/docs/manual/core/authentication/)を選択してください。
cdata.jdbc.mongodb.jar をダブルクリックすると、下記の画面が表示されます。こちらで接続テストをした後、接続文字列をコピーして利用すると良いかと思います。適切な認証方式と ID/PASSWD が選択できているか否かを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/512a3d91-5b42-e1ec-c5ec-2ecde9bba4a3.png)

接続文字列の末尾に下記を付与することで、指定したディレクトリにログファイルを出力することもできます。
`LogFile=C:\log\MongodbLog.log;Verbosity=3;`

[ビュー作成] ボタンを押下し、接続が成功し、テーブル名が参照できればひとまず大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/e03284af-0c4a-d2cf-9cb8-dc4e0306cf02.png)

## ビュー作成
先の手順で作成したデータソースを参照して、[ビュー](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294093)を作成します。
demo データベース内の result コレクションを参照するビューを作成します。コレクションというのは、一般的なデータベースでいうテーブルと読み替えていただければと思います。
```json:result コレクション
[
  {
    _id: ObjectId("63d0d1051f32a7567cff7763"),
    division: '北海道支店',
    sales: 1000
  },
  {
    _id: ObjectId("63d0d1da1f32a7567cff776c"),
    division: '関東支店',
    sales: 1500
  },
  {
    _id: ObjectId("63d0d1da1f32a7567cff776d"),
    division: '中部支店',
    sales: 1200
  },
  {
    _id: ObjectId("63d0d1da1f32a7567cff776e"),
    division: '近畿支店',
    sales: 1500
  },
  {
    _id: ObjectId("63d0d1da1f32a7567cff776f"),
    division: '中国支店',
    sales: 800
  },
  {
    _id: ObjectId("63d0d1da1f32a7567cff7770"),
    division: '四国支店',
    sales: 700
  },
  {
    _id: ObjectId("63d0d1db1f32a7567cff7771"),
    division: '九州沖縄支店',
    sales: 1800
  }
]
```
上記コレクションから division と sales フィールドを参照するビューを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/3c387cb6-c568-b265-9f93-7fe1b72d8b2c.png)

## レポートの作成
[レポート](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2293799)を新規で作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/03d33c5e-6048-fa04-2285-8826f5b43803.png)

## 最後に
JSON や XML などの形式でデータを扱うドキュメント指向型のデータベースにも対応可能なことが分かりました。[Yellowfin BI](https://yellowfin.co.jp/analytics-best-practice/dashboard-gallery?dashboard=interactive-dashboards) の使い勝手が更に広がりますね。
では皆様、良いデータ分析を!
See you then, Cheers! Skål!