MongoDBとTableauの連携方法

MongoDBとは

NoSQLに分類される、ドキュメント指向データベースである。従来のRDBMSのように固定されたスキーマを持つのではなく、JSONのような構造的データ(ドキュメント)の集合をコレクションとして管理する。

RDBMS MongoDB
テーブル コレクション
レコード ドキュメント

MongoDB Atlas

MongoDBの開発元が直接提供するサービスであり、自前でMongoDBサーバ上にインストールすることなく、クラウドで使い始められるサービス。AWS, Azure, GCPの中から選んでクラスタをデプロイすることができる。

ここで言うクラスタとは、複数台のMongoDBインスタンスのまとまりを意味している。Atlasを使えば、ユーザはUI上でレプリケーションの台数、シャーディングの台数を選ぶだけで、簡単に冗長構成のMongoDBを利用できる。

プランの選択方法

大まかに以下の三つのプランがある。

  • Serverless
    事前にリソースをプロビジョニングすることなく、使った分だけ課金される。
  • Dedicated
    専用のサーバを確保でき、最も高機能である。使った時間に応じて課金される。
  • Shared
    共用のサーバ上で動く。Dadicated同様に時間課金制だが無料プランもある。

このうち下二つのプランでは、クラスタのグレード(Cluster Tier)を選ぶことができる。M○○の記号で表されており、〇〇の数字が大きいほど高額になるが、処理速度が向上し機能も充実する。DedicatedではM10~M700, SharedではM0~M5から選択できる。

ServerlessプランはまだPreview段階であり、Tableauとの連携機能は使うことができない。また、Tableau機能を用いるために必要なBI Connector(後述)はM10以上のクラスタのみで利用可能であるため、今回はDedicatedプランの中からいずれかを選択する必要がある。DedicatedのM10クラスタは $0.08/時間($57/月)である。

MongoDB Connector for BI (BI Connector)

BIとは、Business Intelligenceの略である。Business Intelligenceとは、膨大な業務データを収集して分析し、その結果を可視化する仕組みのことである。そのようなツールを「BIツール」と呼ぶ。

Tableauを含む伝統的なBIツールは、SQLによって表形式のDBに対して使えるようにデザインされているため、NoSQLのMongoDBで用いるためには、BIツールの発行したSQLクエリをMongoDBクエリに変換する必要がある。これをMongoDB Connector for BIが担う。

BI Connectorの利用料金は、クラスタの利用料金に追加で請求される。請求額についてはコンソールから確認できる。

Atlas上のクラスタでBI Connectorを使用する場合、M10, M20クラスタでは性能低下が現れる可能性があり、これを避けるにはM30へのアップグレードが推奨されている。

Tableauとは

Tableauとは、組織のデータを最大限活用することを可能にするビジュアル分析プラットフォームである。データの探索・管理を簡単に行うことができる。(参考)

Tableau 〇〇と言う名前の製品は複数存在する。

  • Tableau Desktop
    ローカルのPCでデータ分析、可視化を行うツール。インストールして使う。
  • Tableau Server
    自社サーバにインストールして用いる。画面を編集することは可能だが、Tableau Desktopと比べて機能が制限されているため、Tableau Desktopで作成した画面を複数人で共有しブラウザ経由で閲覧する用途に用いることが多い。
  • Tableau Online
    Tableauのクラウドサービス。Tableau ServerのSaaS版。自社でサーバ管理する必要がない。
  • Tableau Reader
    閲覧のみ。PCにインストールして無料で利用できる。

今回はTableau DesktopをローカルPCにダウンロードし、MongoDBとの連携を進める。

MongoDB Atlasの初期設定(参考)

Atlasアカウントの作成

こちらを参考に、Atlasアカウントを作成します。

  • Google アカウントを用いた登録
  • メールアドレスを用いた登録

のいずれかで登録を行います。登録完了後に、組織(Organization)とプロジェクト(Project)を作成しましょう。(参考1, 参考2)

ネットワークの設定

こちらを参考にして、Atlasにアクセス可能なIPアドレスを設定します。

DBユーザの作成(参考)

DBにアクセスするためのユーザを作成します。

今回は認証方式をパスワード方式とします。

ここで設定したパスワードは後ほど用いるため忘れないようにしましょう。

また、今回ユーザの権限は「Read and write to any database」にしました。Tableauと連携したいDBにはreadとwriteの権限を持たせましょう。

Clusterの立て方

以上の設定が終わると、右下の「Create Cluster」ボタンを押します。
クラスタ名はあとで変更できないので、慎重に決めましょう。
請求情報を入力すると、Clusterの作成が始まります。(Clusterの作成には数分かかることがあります。)

MongoDB BI Connctorの設定

ダッシュボードから、以下のようにクラスタ名の横のメニューから、Edit Configurationを開きます。

Configurationの中から、Additional Configurationを開きます。

Additional Configuration内の、Enable Business Intelligence Connectorを有効にします。この際に、Sample Reflesh Intervalの値を忘れずに設定する必要があります。これは、MongoDBがデータを自動でサンプリングしてスキーマ情報を作成する頻度の設定であり、0以外の値を設定する必要があります。(参考)今回は600秒(10分)としています。

Tableauとの連携に必要な情報を取得

ここに表示されている情報をTableau Desktop側で入力することで、データを連携することが可能になります。

Tableau Desktop の初期設定

ここからTableau Desktopをダウンロードし、インストールする

Tableau Desktopの画面上で「接続」の中から「MongoDB BI Connector」を選ぶ

ここで使っているデスクトップPCのOSごとに異なるドライバのインストールを求められるので、指示に従ってインストールする。

ドライバをインストールすると、再度「接続」の中から「MongoDB BI Connector」を選んだ時に接続用の画面が表示されるようになる。

Tableau Desktop との連携方法 (参考)

接続方法の中からMongoDB BI コネクターを選択すると、接続用の画面が表示されます。ここに先ほどMongoDB Atlasで得たHostNameをサーバ欄に、Portをポート欄に、接続したいデータベース名をデータベース欄に、Userをユーザ名の欄に入力し、入力したユーザのパスワードをパスワード欄に入力します。

入力した状態に間違いがなければ、以下のような画面に遷移します。これで連携が完了です。

エラー例

以下のようなエラーが出た場合、Atlas上でMongoDB BI ConnectorのSample Reflesh Intervalの設定が間違っている、または設定したばかりのためインターバルの時間が経過していない可能性があります。

まとめ・考察・その他

  • Tableau Desktop との連携方法で検索すると、MongoDB公式のTableau Desktopとの連携方法のドキュメントもヒットする。しかしながら、この手順でダウンロードすることになるMongoDB公式レポジトリのODBCドライバの最新版は、最新のMacOS上では動作しない。(これはMongoDB Atlasのチャットサポートから問い合わせて確認済み。)
  • Tableauの公式ドキュメントではMongoDB公式と違った方法が提案されており、こちらを試すと結果的にうまくいった。
  • BIコネクタの設定の際に設定した、Sample Reflesh Intervalの値を設定するところが一番のハマりポイント。連携方法の公式ドキュメントやさまざまなブログ等を見ても、この項目が重要であることが書かれていない。しかも、エラー内容が上記エラー例の通り、権限がないというニュアンスで出てくるためタチが悪い。
Select a repo