ようへいの日々精進XP

よかろうもん

短い正月休みに re:dash に触れてみたら感動したのでメモ

この記事は

既に 2018 年だけど...

qiita.com

初老丸 Advent Calendar 2017 21 日目の記事です.

re:dash とは

うっかり, rehash と打ってしまうことしばしば. ちなみに, re:dash の正式な表記は「redash」なのか「redash」なのか, 「Re:dash」なのか判らなかったので, 本記事では re:dash で統一したいと思う.(正式な表記があれば教えてください〜)

redash.io

OSS で提供されているダッシュボード生成ツールで, データソースMySQLPostgreSQL 等の RDMS に始まって, Amazon RDS の Aurora や Elasticsearch や Google BigQuery, Graphite を指定することが出来る.

個人的にグッときたのは, データソースとして Graphite や Elasticsearch が利用出来る点, そして Python コードが実行出来る点. 書いているだけでワクワクする.

re:dash は OSS 版を任意の環境に展開して利用するか, ホスティングサービスも提供されているようで, 自分達でサーバーやリソースを管理するのがダルい場合や re:dash 使いたいけど, サーバーは落としたくないという顧客相手にはホスティング版も選択肢として検討出来ると思う.

re:dash を体験する

ハンズオン資料

以下のハンズオン資料を利用させて頂いて体験する.

github.com

ハンズオン環境

以下の環境でハンズオンを体験する.

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G17023

$ docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: false

$ docker-compose version
docker-compose version 1.16.1, build 6d1ac21
docker-py version: 2.5.1
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j  26 Sep 2016

環境構築

ハンズオン資料に従って, Docker Compose で構築する.

$ git clone https://github.com/kakakakakku/redash-hands-on.git
$ cd redash-hands-on
$ docker-compose run --rm server create_db
$ docker-compose up -d

資料では docker-compose up と書かれていたけど, デタッチモードで起動した.

ログイン

ブラウザで http://localhost にアクセスすると以下のように!

f:id:inokara:20180103205616p:plain

Email や Password は資料通りに.

データソース

データソースの指定で, 一瞬だけ「データソースボタン」ってどこなの?って思ったりしつつ, 資料通りに MySQL を指定することが出来た.

f:id:inokara:20180103210042p:plain

クエリを作って, グラフもサクッと作ることが出来る

以下のように, New Query をクリックしてクエリを入力する.

f:id:inokara:20180103210720p:plain

既にデータベース(world)が用意されているのが嬉しい限り.

資料に従って, 以下のようなクエリを試してみた.

-- 国の一覧
SELECT * FROM country;

-- 国の件数
SELECT COUNT(*) AS COUNT FROM country;

-- 国の件数(+ 目標値)
SELECT COUNT(*) AS COUNT, 500 AS kpi FROM country;

-- 都市の件数
SELECT CountryCode, COUNT(*) AS COUNT
FROM city
GROUP BY CountryCode
ORDER BY COUNT DESC;

以下のように, クエリを実行して, クエリに対して Visualization Editor で直ぐに可視化が出来る.

f:id:inokara:20180103211807p:plain

以下は都市の件数を円グラフにする実行例.

f:id:inokara:20180103211813p:plain

いい感じ.

同じクエリを利用して棒グラフも作成することが出来る.

f:id:inokara:20180103213327p:plain

パラメータ機能

クエリ内に {{}} を含めると, クエリにパラメータを指定することが出来るようになる.

SELECT * FROM city WHERE CountryCode = '{{CountryCode}}' ORDER BY Population DESC;

下図のように CountryCode に対して任意の値を指定することが出来るようになる.

f:id:inokara:20180103213920p:plain

パラメータの入力項目はテキストフィールド以外に, プルダウン等も指定することが出来る.

f:id:inokara:20180103214300p:plain

プルダウン以外に Date を選択すると, 日付ピッカーから日付を選択することが出来る.

f:id:inokara:20180103214525p:plain

今回のデータベースは日付は関係ないのでアレだけど, これは便利そうだ.

フィルタ機能

クエリのカラム名カラム名::filter 又は カラム名::multi-filter という名前にすると, クエリの結果に対してフィルタを掛けることが出来る.

f:id:inokara:20180103222603p:plain

multi-filter で複数の値でフィルタすることも出来る.

f:id:inokara:20180103222908p:plain

これまた便利そう.

その他の機能

ハンズオン資料で紹介されていたのは, 上記のパラメータやフィルタ機能以外に,

等, 直ぐに役立つ機能がギュッと纏まっていて, このハンズオン資料だけで re:dash の主要な機能(だと思われる)を体感出来る気がする.

以上

素晴らしいハンズオン資料

繰り返しになるが, re:dash に初体験の自分でも, あっという間に環境構築が出来て, 主要な機能を余すことなく体感出来た. 有難うございました.

初めて re:dash を使ってみて

ハンズオンやってみて...

  • セットアップが簡単そう(ハンズオン資料のお陰だと思うけど
  • SQL さえ書ければ, 可視化までの手間がとても少ないことが嬉しい
  • 今後, 自分が出会いそうなデータソースはサポートされていることが嬉しい
  • クエリスニペットや通知機能等の細かい機能が嬉しい

ということで, 次は

  • データソースに Amazon RDS の Aurora や DynamoDB 等を利用して試してみたい
  • Python はどんな風に使うのか気になるところ