今回新たにBIツールを導入する機会があり、Redash 以外の選択技も検討しGoogle データポータル を選定しました!🙌
本記事では、Metabase と Google データポータル の比較及び、選定した Google データポータルの導入を紹介したいと思います 😊
もくじ
弊社では、今必要な数字だけでなく、今後必要な数字になるであろう数字などカジュアルにデータを解析する基盤として Redash を数年間運用してきました。
Redashを数年運用してみて、
- OSSでPythonで書かれているため何かあってもソースコードを読めば理解できる
- ネット上の情報量が多い
- 対応しているデータソースの種類が多い
- SQLの中にパラメータを入れる仕組みがある
- グラフ化も簡単にできる
- SQLのスケジューリングが可能
- アラート機能がある
といったメリットを感じています。
ですが、Redash がクラッシュすることも稀にあり、その際に docker を再起動したりと少なからず運用コストがかかっていました。
また、今回は RDS にSSHトンネルで接続したかったのですが、Redash は通常の設定では利用できないのでautossh
を利用して解決する必要があります。
そこで Metabase と Google データポータル を選択技に加え検討しました。
まず、Metabase のメリット・デメリットはこのように感じました。
- SSHトンネルが標準で利用可能
- 開発が活発
- 見た目がキレイ
- SQLレスで可視化することができる
- SQLの中にパラメータを入れる仕組みがある
- グラフ化も簡単にできる
- 導入は比較的簡単そう
- slack通知でマルチバイト文字が使えない
- 運用コストが少なからずかかる
- 対応しているデータソースの種類が少ない
個人的にはキレイなビジュアルがとても気に入っていますが、できれば運用コストは0を目指したいところです。
次にGoogle データポータルのメリット・デメリットも見ていきましょう。
- dockerで起動する必要がないので運用コストがかからない
- 導入コストも低い(googleアカウントがあればすぐに使える)
- 簡単に複数のデータを統合することができる
- レポートの共有ができるのでユーザーの管理を行わなくていい
- 対応しているデータソースの種類が少ない
- SSHトンネルは利用できない
Googleデータポータルは docker を起動する必要がなく、運用コストがかからないのが素晴らしいです。
対応しているデータソースも今回接続したい要件を満たしているので問題はありません。
ということでGoogleデータポータルをBIツールとして導入します。
今回接続したいのはAWS RDSに作成されているMySQL DBになります。
まず、該当DBのリードレプリカを作成します。
該当DBを選択し、アクションの リードレプリカの作成から簡単に作成することができます。
続いて、Googleデータポータルと先ほど作成したリードレプリカDBを接続できるように対応していきます。
まずはGoogleデータポータル接続用のセキュリティグループを作成します。
インバウンドルールに下に記載されているIPアドレスをすべて追加してアクセス可能にします。
続いて、作成したセキュリティグループをリードレプリカDBに適用します。
ここまでできたらGoogleデータポータルからリードレプリカDBにアクセスできるようにパブリックアクセシビリティを有効にします。
動作確認用にインバウンドルールに自分のIPを追加し、接続を試してみます。
するとCan't connect
と接続に失敗しました。
試しにSSHトンネルでEC2のwebサーバ経由で接続を試してみると正常に接続できます。
そこから1つずつ設定を確認し、再起動や一旦すべてのIPを許可して動作確認してみるも接続できず。
見事にハマりました 😂
問題を切り分けるため、一度プライマリDBに先ほど作成したセキュリティグループを適用しパブリックアクセシビリティを有効にしてみます。
すると、見事に接続ができました!!!
どうやら問題はリードレプリカにあるようだと判明しました。
調べてみると、下記の記事を見つけ、どうやらマルチAZ配置が怪しいと当たりをつけれたものの、今日は限られた時間の中でGoogleデータポータルを導入しブログ記事にするという使命があります。
なので、不本意ながらここは一旦リードレプリカではなくプライマリDBに接続し記事の執筆を進めたいと思います。
(後日、リードレプリカは改めてチャレンジしてみよう)
マルチ AZ 配置を作成する場合、アプリケーションの耐障害性を向上させるために、異なるアベイラビリティーゾーンで複数のレプリカ DB インスタンスを起動してください。各 DB インスタンスに関連付けられているサブネットが、同じまたは同様のルートテーブルに関連付けられていることを確認します。そうではない場合、プライマリ DB インスタンスがスタンバイレプリカにフェイルオーバーし、かつスタンバイレプリカが別のルートテーブルに関連付けられているとき、以前に DB インスタンスにルーティングされていたトラフィックが正しくルーティングされなくなる可能性があります。
Amazon RDS DB インスタンスへの接続に関する問題を解決する
さて、見事にハマったものの、ようやく準備が整ったのでGoogleデータポータルでデータソースの作成を行なっていきます。
Googleデータポータルページにアクセスしたら左上の 作成 ボタンを押下し、 データソースを選択します。
すると接続可能なコネクタ一覧が表示されます。
左上のデータソース名を任意で変更し、コネクタ一覧のMySQLを選択します。
データベース認証情報入力フォームが表示されますので、適宜入力します。
正常に認証されれば、DBテーブルのリストが右に表示されるので、使用したいテーブルを選択して右上の接続をクリックします。
これでデータソースの作成ができました。
続いてレポートの作成を行なっていきます。
右上に レポートを作成 のボタンがあるので押下します。
フィールドを追加する必要がある場合はここでフィールドを追加しておきます。
また、カラム(ディメンション)はここで日本語に適宜変更することもできます。
レポート作成ページに遷移したら、先ほどのデータソースで取得したデータを使用してテーブル表示からグラフ表示など、レポートの作成が行えます。
また、使用するカラムや、集計、並べ替えなどSQLを書かずに操作できるので、ここまできたらエンジニアじゃなくても誰でもできますね。
まずは、単純に日別の売り上げを集計してテーブルで表示してみます。
これを次はグラフにしてみます。
メニューの グラフを追加 をクリックしてグラフの種類を選べばこれだけでグラフ表示完成です。
以上、駆け足でしたが Googleデータポータルの導入紹介でした!
今回はGoogleデータポータルの紹介でしたが、利用する環境でうまくメリットが活かせる場合は他のBIツールで試すのもいいと思います😊
Metabase や Google データポータルの比較が参考になれば幸いです!
また、同じようなところでハマってしまった方の助けになればと思います ☺️
ラジコードでは、定額制受託開発の中でデータを元に議論が行えるように、クライアント様にもデータを見れるよう様々なデータの可視化を積極的に行っています!
定額制受託開発についてはこちらをご覧ください。