Docker+Redash+MySQLでデータ可視化環境セットアップ手順


何を作るか

OSSのBIツールを試してみるために,有名どころのRedashを使ってみようと思いました。
今回は関東の人口のヒートマップを作ることを目的とします。
関東の人口を記述した表形式のデータをMySQLに保存します。
データソースとなるMySQLはDocker外に出します。

環境

macOS High Sierra
バージョン 10.13.6

インストールするもの

手順概要

Redashの公式サイト(https://redash.io/help/open-source/dev-guide/docker)
を参考に、進めていく。

1.Gitレポジトリのクローン
2.Dockerイメージのビルド
3.npmパッケージのインストール
4.RedashのPostgresデータベースの作成
5.Devサーバーの実行
6.MySQLデータベースへの接続
7.クエリーを取得して、地図に可視化

1.Gitレポジトリのクローン

git clone https://github.com/getredash/redash.git
cd redash/

2.Dockerイメージのビルド

docker-compose up -d

redashディレクトリにdocker-compose.ymlがインストールされている。
ビルド済みイメージ(Redash web server, worker, PostgreSQL and Redis)をフェッチし、Dockerイメージをビルドする。
今回は、特にdocker-compose.ymlファイルを編集はしなかった。

3.npmパッケージのインストール

package.jsonを用いることで、インストールパッケージの種類やバージョンを指定できる。

npm install

4.データベースの作成

テーブルの作成

docker-compose run --rm server create_db

テスト用のデータベースの作成(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121324/284bfc6e-d03e-dff0-2f76-1ecbb04cd91f.png)

docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"

5.Devサーバーの実行

npm run build
npm run start

http://localhost:8080でアクセスできる

6.データベースの接続

MySQLを用いたデータベース接続は、別の資料を参考。

Docker for macで作成されたコンテナはLocalhostでは接続できないことを知らなかったため、一番苦労しました。
Docker for macでコンテナの中からホストに接続する方法はこちらのサイトを参照して解決。(https://cockscomb.hatenablog.com/entry/docker-for-mac-localhost)

以下のようにデータベースを設定

7.クエリーを取得して、地図に可視化

適当なテーブルからSELECT文で、クエリーを取得。
クエリーから以下を用いて、可視化の設定を行う。

※おまけ
東京のマクドナルドのデータを緯度、経度を指定し、表示

今後の展望

・県区切りではなく、県の市区町村区切りで、人口を可視化したい
→shapeファイルの設定の変更ができれば実現が可能

・データソースを今回は,MySQLを使ったが、他のデータソースも使ってみたい

・メッシュコードに応じたコロプレス図、マーカー図を使ってみたい

・綺麗なダッシュボードの作成(https://github.com/kakakakakku/redash-hands-on/blob/master/README.md)