re:dashでMySQLのデータをグラフ化する

話題の[re:dash](http://redash.io/)でMySQLのデータをグラフ化してみました。

公式のセットアップ手順は以下のページに載っています。
http://redash.io/deployment/setup.html

masterをインストールしようとしたところいくつか躓いたので、トラブりたくない場合は公式のAMIからEC2上にインスタンスを作るのが良いと思われます。

# セットアップ環境
* re:dash [1914ed7c7c](https://github.com/EverythingMe/redash/tree/1914ed7c7ca73ef0fd63902d888694088624c8c0)
* Ubuntu Server 14.04 LTS (on Vagrant)
* MySQL 5.5
* [Employees Sample Database](http://dev.mysql.com/doc/employee/en/index.html)

# セットアップ手順

```bash
# とりあえずapt update & upgrade
sudo apt update
sudo apt upgrade

# 先にMySQLをインストールしておく
sudo DEBIAN_FRONTEND=noninteractive apt -y install mysql-server
sudo apt -y install git

# 環境に応じてinnodb_buffer_pool_sizeを調整
#sudo sed -i '/^\[mysqld\]/a innodb_buffer_pool_size = 16M' /etc/mysql/my.cnf
#sudo service mysql restart

# re:dashをclone
git clone https://github.com/EverythingMe/redash.git
cd redash/
#git checkout 1914ed7c7ca73ef0fd63902d888694088624c8c0

# bootstrapスクリプトを実行
sudo bash setup/bootstrap.sh

# pythonのパッケージが足りないので手動でインストール
sudo pip install flask-admin
sudo pip install peewee
sudo pip install wtf-peewee

# .env.exampleはtypoがあるようなので自前で.envを作成
cat > .env <<EOF
export REDASH_CONNECTION_ADAPTER=pg
export REDASH_CONNECTION_STRING="dbname=redash"
export REDASH_STATIC_ASSETS_PATH="../rd_ui/dist/"
export REDASH_LOG_LEVEL="INFO"
export REDASH_WORKERS_COUNT=6
export REDASH_REDIS_URL=redis://localhost:6379/1
export REDASH_DATABASE_URL="postgresql://redash"
export REDASH_COOKIE_SECRET=veryverysecret
export REDASH_GOOGLE_APPS_DOMAIN=
EOF

# サンプルデータのダウンロード
wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2
tar xf employees_db-full-1.0.6.tar.bz2

# サンプルデータをインポート
cd employees_db/
mysql -u root -t < employees.sql
cd ..

# データソースを追加（問い合わせがあるので以下のように入力）
sudo -u redash ./bin/run ./manage.py ds new
# -> Name: employees
#    Select type:
#    1. bigquery_gce
#    2. script
#    3. url
#    4. mongodb
#    5. bigquery
#    6. graphite
#    7. pg
#    8. mysql
# -> [1-8]: 8
#    Password (optional):
# -> Host (optional): localhost
# -> Database name (required): employees
# -> User (optional): root
#    Port (optional):
#    Creating mysql data source (employees) with options:
#    {"host": "localhost", "db": "employees", "user": "root"}
#    Id: 2

# データソースを確認
sudo -u redash ./bin/run ./manage.py ds list
# Id: 1
# Name: re:dash metadata
# Type: pg
# Options: {"user": "redash_reader", "password": "ohchoqua", "host": "localhost", "dbname": "redash"}
# --------------------
# Id: 2
# Name: employees
# Type: mysql
# Options: {"host": "localhost", "db": "employees", "user": "root"}
```

# 動作確認
ポート80にアクセスするとログイン画面が表示されるので `admin`/`admin`でログインします。
![](https://qiita-image-store.s3.amazonaws.com/0/20100/0c68d44a-4396-4ace-80a1-a117267837dc.png)

New Queryで新規にクエリを作成。![](https://qiita-image-store.s3.amazonaws.com/0/20100/16a13053-93b6-834b-0eb3-55f797bcd420.png)

クエリ作成画面で`Data Source: employees`を選択して…
![](https://qiita-image-store.s3.amazonaws.com/0/20100/5e550691-6d6a-a630-303b-54d7686fa434.png)

以下のようなクエリを実行すると、とりあえず実行結果が表示されます。

```sql
SELECT gender,
       count(*) AS COUNT
FROM employees
GROUP BY gender
```

![](https://qiita-image-store.s3.amazonaws.com/0/20100/369e977c-e301-deb7-cb1e-083d41b716f2.png)

さらに「+ New」タブをクリックして、パラメーターを編集するとグラフ化されます。

![](https://qiita-image-store.s3.amazonaws.com/0/20100/7b9509c7-b0e0-d67f-74b0-af85b7f5e821.png)