オープンソースのデータ可視化ツールのre:dashでらくらく分析共有
ウェブサービス、ソーシャルゲームなどを運営していると数値データがたまります。 その数値データを分析して、次の施策に活かすのが非常に大事です。
生のデータをMySQLなどを叩いて、数値に出して、Excelにグラフを貼り付けるのもいいですが、毎回やっていると工数がとられます。 ディレクター、エンジニア、だれでも出したい数値が自分で出せるのが理想です。
Tableauなどのツールもありますがいかんせん値段がたかくて手がだせません。 1人ならまだしも、チームで共有したい場合はライセンス料が何十万にもなってしまいます。
そこでオープンソースのre:dashです。(ただSQLを叩く必要あがるというのはありますが)
環境
EC2でAmazon Linuxの最新を作成したものを想定してます。 Amazon Linux AMI 2015.09.1 (HVM), SSD Volume Type - ami-383c1956
re:dash
re:dashはRedshiftやMySQLなどのデータソースと連携してそのデータをビジュアライズしてくれます。 re:dash自体Webサーバになっているので、ビジュアライズされたデータが、ブラウザで確認できます。 しかも、re:dashはオープンソースなので無料で構築できます。
しかし、自分でmac上や、EC2のAmazon Linux上に構築してみましたがかなりインストールがつらいです。 nginx, gunicorn, supervisord, celery, redis, postgresqlなど慣れていればいいものの知らないと、構築できないときのデバッグが大変です。 そもそも、Amazon Linuxのスクリプトはあるのですが、すでにそのスクリプトが壊れているのでインストールできません。
UbuntuやDockerなら楽っぽいのですが、自分はAmazon Linux上で構築したかったのです。 そこで、re:dashをforkして、インストールスクリプトを直し、AnsibleでEC2にインストールできるようにしました。
リポジトリ
- https://github.com/wapa5pow/ansible-redash-amazon-linux
- ansible-redash-amazon-linuxで使っているforkされたre:dash
構成
re:dashはFlaskを使っているので、もし直したかったらpythonでごにょごにょできそうです。 nginxが前にたってますが、別になくてもいい気はします。 re:dashはメインのDBがPostgreSQLです。MySQLはre:dashだけならいらないのですが、データソースとして使いたいのでインストールしてあります。
インストール手順
以下の通りやればインストールできます。Ansibleはインストールしておいてください。
クローン
git clone https://github.com/wapa5pow/ansible-redash-amazon-linux
hostsをEC2のものにする。EC2はsshとhttpのポートをあけておく
cd ansible-redash-amazon-linux
vi hosts
your-private-key.pemをEC2のSSH用秘密鍵に設定して以下を実行
ansible-playbook site.yml --private-key=~/.ssh/your-private-key.pem -u ec2-user -i hosts
Ansibleが失敗する場合は、上記の同じコマンドをもう一度うつと成功します。
re:dashの使い方
ログイン
admin/adminでログインします。
データソースの追加
re:dashは各種データベースにつなげるのですが、同じインスタンス上にインストールしてあるMySQLを追加するため以下のようにします。
クエリの作成
データソースを作成したらクエリを作成します。
ビジュアライゼーション
発行したクエリから同じ画面の下のほうにある、「+New Visualization」からグラフなどが作れます。
ダッシュボードの作成
ビジュアライズしたグラフを集めて、ダッシュボードが作れます。ここにまとめておけば定期的なKPI確認が楽そうです。
線グラフ
SQLクエリ
select date(payment_date), sum(amount) from sakila.payment group by date(payment_date)
グラフ
棒グラフ
SQLクエリ
select * from Country
stackにしないとおかしな値になる
- re:dashの改善点
- 人口が多いところから左に並べたい
エリアグラフ
skip
パイチャート
SQLクエリ
select * from Country
グラフ
散布図
SQLクエリ
select * from Country
グラフ
コホート
リテンションなどを見れます
スクショはデモページからです
カウンター
目標と実績を比較するのに使えそうです
SQLクエリ
select * from Country
グラフ
re:dashでGoogle Spreadsheetsが扱える仕組み
ここにドキュメントがあるのですが、re:dashではpythonモジュールのgspreadとoauth2clientを使ってGoogle Spreadsheetsからデータをとってきています。
手順概要
- Google Developer Consoleでプロジェクトを作成
- Service account keyの発行
- APIを有効にする
- Google Spreadsheetsのデータソースの作成
- データセットを用意してGoogle Spreadsheetsにあげる
- ビジュアライゼーション
Google Developer Consoleでプロジェクトを作成
re:dashからGoogle Spreadsheetsにつなぐには、Service account keyをGoogle Developer Consoleから発行する必要があります。
まずプロジェクトをつくります。今回はredash-sampleという名前にしました。
Service account keyの発行
つぎにAPIのメニューで、Service account keyを発行します。 この手順を行うと最終的にjson形式のファイルがダウンロードされます。これはあとから使うので適切なところに保存しておきます。
APIを有効にする
つぎにOverviewからDrive APIを探してenalbedにしておきます。
Google Spreadsheetsのデータソースの作成
以下のように作成します
データセットを用意してGoogle Spreadsheetsにあげる
平成22年基準消費者物価指数のページの中分類指数(1970年1月~最新月)をcsvでダウンロードしてきてこれをGoogle Spreadsheetにあげます。
その後、以下のようにデータを整形します。A1はYYYYMMのほうが適切かなとおもったのでかえました。
そして、これをService account keyのjsonの中にあるemailにシェアします
ビジュアライゼーション
Google SpreadsheetのURLが以下の場合とします。
そのときに、New Queryで作成する値には、以下をいれます。 「URLにあるkey」と「スプレッドシート番号(0から始まる)」を「|」で区切っていれます。
適当にビジュアライゼーションすると、以下のようになります。 ほうほう、家賃は下がっているのですね。
pivot table
と、ここまでやって思ったのですが、Excelのほうが早くて便利なので、Excel使ったほうがいいかもと思いました。 ただ、DownloadしてExcelで開かなくてもWeb上でできるので楽っちゃらくです。