オープンソースのデータ可視化ツールの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

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にインストールできるようにしました。

リポジトリ

構成

re:dashはFlaskを使っているので、もし直したかったらpythonでごにょごにょできそうです。 nginxが前にたってますが、別になくてもいい気はします。 re:dashはメインのDBがPostgreSQLです。MySQLはre:dashだけならいらないのですが、データソースとして使いたいのでインストールしてあります。

server_pptx.png

インストール手順

以下の通りやればインストールできます。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_Login.png

データソースの追加

re:dashは各種データベースにつなげるのですが、同じインスタンス上にインストールしてあるMySQLを追加するため以下のようにします。

re_dash___Data_Sources.png

re_dash___Data_Sources.png

クエリの作成

データソースを作成したらクエリを作成します。

re_dash___Country_Analytics.png

ビジュアライゼーション

発行したクエリから同じ画面の下のほうにある、「+New Visualization」からグラフなどが作れます。

re_dash___Country_Analytics.png

ダッシュボードの作成

ビジュアライズしたグラフを集めて、ダッシュボードが作れます。ここにまとめておけば定期的なKPI確認が楽そうです。

re_dash___Home.png

re_dash___Home.png

re_dash___国ごとの統計.png

スクリーンショット_2016-01-26_12_13_02.png

線グラフ

SQLクエリ

select date(payment_date), sum(amount) from sakila.payment group by date(payment_date)

グラフ

re_dash___New_Query.png

棒グラフ

SQLクエリ

select * from Country

re_dash___New_Query.png

re_dash___New_Query.png

stackにしないとおかしな値になる

  • re:dashの改善点
    • 人口が多いところから左に並べたい

エリアグラフ

skip

パイチャート

SQLクエリ

select * from Country

グラフ

re_dash___New_Query.png

散布図

SQLクエリ

select * from Country

グラフ re_dash___New_Query.png

コホート

リテンションなどを見れます

スクショはデモページからです

re_dash___Cohort_Example.png

カウンター

目標と実績を比較するのに使えそうです

SQLクエリ

select * from Country

グラフ

re_dash___New_Query.png

re:dashでGoogle Spreadsheetsが扱える仕組み

ここにドキュメントがあるのですが、re:dashではpythonモジュールのgspreadとoauth2clientを使ってGoogle Spreadsheetsからデータをとってきています。

手順概要

  1. Google Developer Consoleでプロジェクトを作成
  2. Service account keyの発行
  3. APIを有効にする
  4. Google Spreadsheetsのデータソースの作成
  5. データセットを用意してGoogle Spreadsheetsにあげる
  6. ビジュアライゼーション

Google Developer Consoleでプロジェクトを作成

re:dashからGoogle Spreadsheetsにつなぐには、Service account keyをGoogle Developer Consoleから発行する必要があります。

まずプロジェクトをつくります。今回はredash-sampleという名前にしました。

Home_-_redash-sample.png

Service account keyの発行

つぎにAPIのメニューで、Service account keyを発行します。 この手順を行うと最終的にjson形式のファイルがダウンロードされます。これはあとから使うので適切なところに保存しておきます。

Home_-_redash-sample.png

Credentials_-_redash-sample.png

Create_service_account_key_-_redash-sample_と_Dash.png

APIを有効にする

つぎにOverviewからDrive APIを探してenalbedにしておきます。

API_Library_-_redash-sample.png

Google Spreadsheetsのデータソースの作成

以下のように作成します

re_dash___Data_Sources.png

データセットを用意してGoogle Spreadsheetsにあげる

平成22年基準消費者物価指数のページの中分類指数(1970年1月~最新月)をcsvでダウンロードしてきてこれをGoogle Spreadsheetにあげます。

その後、以下のようにデータを整形します。A1はYYYYMMのほうが適切かなとおもったのでかえました。

平成22年基準消費者物価指数_-_Google_Sheets.png

そして、これをService account keyのjsonの中にあるemailにシェアします

平成22年基準消費者物価指数_-_Google_Sheets.png

ビジュアライゼーション

Google SpreadsheetのURLが以下の場合とします。

平成22年基準消費者物価指数_-_Google_Sheets.png

そのときに、New Queryで作成する値には、以下をいれます。 「URLにあるkey」と「スプレッドシート番号(0から始まる)」を「|」で区切っていれます。

re_dash___New_Query.png

適当にビジュアライゼーションすると、以下のようになります。 ほうほう、家賃は下がっているのですね。

re_dash___New_Query.png

pivot table

re_dash___Country_Analytics.png

と、ここまでやって思ったのですが、Excelのほうが早くて便利なので、Excel使ったほうがいいかもと思いました。 ただ、DownloadしてExcelで開かなくてもWeb上でできるので楽っちゃらくです。