BIツールでMySQLのデータを可視化する
本ドキュメントは次のミラーサイトです。
とある案件で、MySQLのデータを手っ取り早く可視化して関係者にお披露目する機会があった。
Google Data Studio ではそれが簡単にできるので、手順を紹介する。
Google Data Studio について
BIツール(Business Intelligence ツール)のひとつ。
BIツールといえば、Tableau(タブローと読む。Salesforceアナリティクス製品との統合を加速中)が老舗で、名前だけは良く聞くがライセンス費用は高め。
マイクロソフトの PowerBI はある程度まで無料で試すことができ、それなりに情報量も豊富だが、今回は Google Analytics で使用実績があった Google Data Studio を採用した。無料で使える。
接続できるデータソースは、
- Googleが展開するサービス(Google Analytics、スプレッドシート、Cloud Storage、Search Console等)
- BigQuery
- MySQL
- PostgreSQL
- その他アップロードファイル
など。
新型コロナウイルス感染症の陽性者数などをAIで予測し、リアルタイムで表示する下記サイトも Data Studio のダッシュボードを利用している。
手順
MySQL
まず、MySQLのconfファイルの場所をmysql --help
などで確認し、MySQL側で外部からの接続を許可しておこう。
bind-address = 127.0.0.1
上記の行をコメントアウトし、MySQLを再起動する。
ちなみに、このbind-address
の誤った解説がネットで散見されるため、念の為に補足しておく。
これはリモートホストのIPアドレスを制限するものではなく、どのローカルアドレスでMySQLがlistenするかの指定である。
コメントアウトするとデフォルトの0.0.0.0
になり、すべてのインターフェースで待ち受けることになる。
127.0.0.1
が指定されていると自分自身しか接続できない。
続いて、mysql -u root
でMySQLに管理者ログインし、すべてのリモートホストから接続できるユーザを作成する。
grant all privileges on DB名.* to ユーザ名@'%';
もし、Can't find any matching row in the user table
のエラーになったら、select user,host from mysql.user
でユーザテーブルの内容を確認し、CREATE USER
してからGRANT ALL
する。
create user DB名@'%' identified by 'パスワード';
最終的に許可するリモートIPアドレスのリストは https://support.google.com/datastudio/answer/7088031?hl=ja に記載されているので、ポート番号3306とともにファイアウォールに追加する。
Data Studio
MySQLを選択する。
接続情報を入力し、[認証] をクリックする。ポート番号はデフォルト通りなら入れなくて良い。
テーブルを選択するか、カスタムクエリにSQLを記述し、[接続] をクリックする。
テーブルまたはSQLの出力項目が展開されるので、必要に応じて修正し、[レポートを作成] をクリックする。
レポート編集画面になる。
ディメンションとは分析軸のことで、指標とは集計項目(合計値、平均値、中央値、最大値など)のこと。
例えば、時間帯ごとの消費エネルギーを見たければ、ディメンションに時間、指標にエネルギーを指定するといった具合。
実データをここに載せる訳にはいかないので、ここではデータソースに「Google Analytics」を設定して説明する。データソースが違くても使い方は変わらない。
Zennで埋め込んだトラッキングコードを持つ Google Analytics と接続し、
- ディメンションに、ページタイトル、イベント名
- 指標に、視聴回数、ユーザーの合計数
- 並び替えに、視聴回数(降順)
を指定すると、自分が投稿したZenn記事のランキング表を簡単に作れた。
Google Analytics には、UAプロパティとGA4プロパティがあるが、イベントを収集できるのはGA4プロパティである。
レポートが完成したら、共有ボタンから他のユーザと共有しよう。
Googleアカウント名やメールアドレス、Googleグループで共有できる他、[共有可能なリンクを取得] すれば不特定多数とレポートを共有できる。
無料版の Data Studio では1レポート1データソースに制限されるが、ダッシュボード・可視化ツールとして使うなら十分活用できると思う。
API と Google Apps Script を使えばコネクタも自作できそうだ。
Discussion