Supersetを導入して、DBを可視化してみた

Adways Advent Calendar 2017 10日目の記事です。

http://blog.engineer.adways.net/entry/advent_calendar_2017


はじめに

12月14日を担当します、井古田です。

普段は広告関連の業務をやりつつ、ちょろっとだけマネジメントをかじってます。
最近は忘年会のビンゴでもらった Google Home Mini で何か便利なものが作れないかなって考え中なので、何か良い案があれば教えてくださーい( ´∀`)

概要

今回はチームの可視化ツールに Superset を導入したのでその紹介をしたいと思います。
可視化ツールにSupersetを選んだ理由は特にありません。強いて言うならまだ他のチームが使ってなかったから、 検証しよう的なノリで導入したのがきっかけです。

Supersetってなんぞ?

SupersetはAirbnbが開発しているOSSのBusiness Intelligence Tool(BIツール)です。
RedashやTableauに似ています。

導入

今回はdocker-composeを使ってSupersetの環境を構築したいと思います。docker便利ですね!
(※Dockerの導入に関しては割愛させていただきます)

では、さっそく進めていきましょう!

$ git clone https://github.com/amancevice/superset.git
$ cd superset
$ ls
examples  superset  Dockerfile  LICENSE  README.md  docker-compose.yml

examples以下に各ミドルウェアごとのdocker-composeの設定ファイルがあるので、好きなものを選んで試してみるのありかと!
では、さっそくSupersetの環境を作ってみます。

$ docker-compose up -d

# 初期設定
$ docker-compose exec superset superset-demo
Username [admin]: admin
User first name [admin]: admin
User last name [user]: admin
Email [admin@fab.org]:
Password:
Repeat for confirmation:

上記はアカウントの初期設定になるので、適当なもの設定してください
(※今回はデモデータがある状態でSupersetの環境を構築してます)

上記のアカウント設定が完了後、 http://localhost:8088 にアクセスすると以下の画面が表示されます。 f:id:AdwaysEngineerBlog:20171214130244p:plain

ここでは先ほど設定したアカウント情報を入力してください。
また、画面右上に国旗が表示されてる部分をクリックして日本語に切り替えることも可能みたいです!
(※最近知りましたw)

ログインすると、ダッシュボード画面に遷移します。

f:id:AdwaysEngineerBlog:20171214130257p:plain

なにかしらクリックしてダッシュボードを確認すると、なんかイケてる画面が出てくると思います!

f:id:AdwaysEngineerBlog:20171214130311p:plain

こんな感じでダッシュボードが表示されれば導入は完了です。

設定

続いて、実際にDBと連携にさせてみます。
上部メニューの[ソース]-[データベース]クリックすると以下の画面に遷移します。

f:id:AdwaysEngineerBlog:20171214130324p:plain

右上の+からクリックして、データベースを作成します。

f:id:AdwaysEngineerBlog:20171214130422p:plain

  • Database の項目にDBの名前をつけます。
  • SQLAlchemy URI の項目にDBのURIを設定します。
    (※mysqlの場合、mysql://[ユーザー名]:[パスワード]@[URI]/[DB名]のような設定になります。その他はこちらから設定方法を確認してください。)
  • Expose in SQL Lab にチェックを入れるとSQL Labからアクセス出来るようになります。

だいたいこんな感じの設定で大丈夫だと思います!(笑)
これで保存するとデータベースが作成されます。

f:id:AdwaysEngineerBlog:20171214130530p:plain

次はテーブルを作成します。

上部メニューの[ソース]-[テーブル]クリックすると以下の画面に遷移します。

f:id:AdwaysEngineerBlog:20171214130550p:plain

右上の+からクリックして、テーブルを作成します。

f:id:AdwaysEngineerBlog:20171214130609p:plain

  • Database は先ほど作ったデータベースを選択してください
  • スキーマ は必要があれば指定してください
  • テーブル名 はDBにあるテーブルを指定してください

今回は試しにusersテーブルを作成します。

f:id:AdwaysEngineerBlog:20171214130628p:plain

テーブルの定義は以下のようになります。

f:id:AdwaysEngineerBlog:20171214130647p:plain

ちょっと雑に設定していますが、許してください(笑)
以上で設定は終わりです!

グラフ化してみよう

続いて、usersテーブルを使ってログイン回数の多い人をグラフ化してみます。
必要となるカラムは以下になります。

  • nickname
  • sign_in_count

先ほど作成したusersテーブルをクリックすると、スライスを作成する画面に遷移します。

f:id:AdwaysEngineerBlog:20171214130706p:plain

左サイドメニューの設定

  • Datasource & Chart Type

    • Datasourceは参照元となるデータを選択するので、今回はusersになります。
    • Visualization Typeからどのように可視化したいかグラフを選んでください。今回はPieChartを選びます。
  • Query

    • Metricsの部分ではグラフ化する指標を選択してください。(※sum_sign_in_countを選択してください)
    • Group by で選択した対象でグルーピングします。今回はユーザーごとのログイン回数をみるので、ここではnicknameを選びます。

以下は任意でいろいろいじってみてください(笑)
期間やグラフのラベルなど、結構いろいろといじれるので楽しいですよ!

  • Time
  • Chart Options
  • SQL
  • Filters

最後に左上のRun Queryをクリックすると更新がかかります。
以下のようなグラフが完成しました!( ^∀^)

f:id:AdwaysEngineerBlog:20171214130728p:plain (※Chart Optionsとかをちょろっといじってます)

あとは、左上のSaveボタンを押すとスライスを保存することができます。
これでいつでも確認できるようになりました!

ダッシュボードをつくってみる

ダッシュボードの画面に遷移して、右上の+ボタンをクリックすると以下の画面に遷移します。

f:id:AdwaysEngineerBlog:20171214130751p:plain

  • タイトル
  • スライス

好きなタイトルを記入し、スライスには先ほど作成したスライスを選んで保存をクリックするとダッシュボードの完成です!
以下が作成したダッシュボード画面になります。

f:id:AdwaysEngineerBlog:20171214130809p:plain いい感じでダッシュボードが作れたかと思います。

最後に

SupersetはRedashと比べるとグラフの種類とかも豊富で、いろいろと楽しいグラフとかを作れるな〜と個人的に感じています。
私のチームでは、日毎や月間のユニークユーザー数や売上、広告の設定情報などを可視化してたりします。
広告の配信ターゲットなどで、どんなキーワードが多く設定されているとかを確認すると結構楽しいです。(下図)

f:id:AdwaysEngineerBlog:20171214130823p:plain

また最近では、リリースした機能のテーブルを可視化して監視し、しっかり使われているかなどのKPIにも使うことがあります。

いかがでしたでしょうか? みなさんがこの記事を読んで無事にダッシュボードを作れていることを祈っていますmm
最後までお読みいただきありがとうございました。