前回に引き続きredashの話題。
今回は実際にデータソースを接続し、ダッシュボードを作成してみた。
接続先データソースの準備
redashの操作の前に、何がしかサンプルのデータソースがいるということで、ひとまずdockerでmysqlを立ち上げて用意する。
$ docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=True --name sample_mysql mysql
docker execコマンドでmysqlクライアントを起動し、サンプル用のデータを用意する。
$ docker exec -it sample_mysql mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.14 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE sample_database; Query OK, 1 row affected (0.00 sec) mysql> use sample_database; Database changed mysql> CREATE TABLE sample_table ( id int PRIMARY KEY AUTO_INCREMENT, input_date date, input_value int); Query OK, 0 rows affected (0.41 sec) mysql> INSERT sample_table(input_date, input_value) VALUES(DATE_ADD('2016-08-01', INTERVAL 31 * RAND() DAY), CEIL(RAND() * 100)); Query OK, 1 row affected (0.04 sec) mysql> select * from sample_table; +----+------------+-------------+ | id | input_date | input_value | +----+------------+-------------+ | 1 | 2016-08-22 | 18 | +----+------------+-------------+ 1 row in set (0.00 sec)
同じ要領で適当にサンプルデータをインサートしておく。
dockerの接続設定
前回作成していたredashのdocker-compose.ymlにおいて、
redashの部分にexternal_links
項を追加し、
先ほど作成したサンプルのデータソースのコンテナを記述しておく。
redash: image: redash/redash:latest ports: - "5000:5000" links: - redis - postgres environment: REDASH_STATIC_ASSETS_PATH: "../rd_ui/dist/" REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: veryverysecret external_links: - sample_mysql
※ 今回は対象がコンテナなのでexternal_linksを使ったが、 多ホストとかならextra_hostsなんかを使うと良い。
設定を有効にするために再起動しよう。
$ docker-compose kill $ docker-compose up -d
redashのデータソースを設定
立ち上げたredashのウェブページにアクセスし、前回示したように右上のメニューよりデータソースの設定追加していく。
クエリの作成
データソースの設定が終われば、次はお待ちかねのクエリの記述。
画面上部の「Queries」メニューより「New Query」を選択し、データソースを選択してクエリを記述する。
先ほど加えたデータソースを選択する。
左側の一覧に出てくることが確認できる。
目的のデータを得られるようなクエリを記述し、「Execute」ボタンを押して実行すると下部に実行結果が表示される。
「NEW VISIALIZATION」ボタンより、グラフやワードクラウド、カウンター、ピボットテーブルなどの表現を適用することができる。
また、クエリの実行を画面表示時だけでなく、スケジューラを用いて定期更新とすることも可能だ。
即時性が不要で重いクエリを投げる場合はこれらが有効だろう。
ここで意図したものが出来上がったら、「Save」ボタンで保存しよう。
ダッシュボードの作成
redashでは、先ほど作成したグラフや表をダッシュボードとして並べることができる。
画面左上の「Dashboards」メニューより「New Dashboard」をクリックし、新規に作成を行うことができる。
「add widget」より先ほど作成したクエリの表現を並べていけば良い。
対象とするクエリを選び
表現やサイズを選んで追加していく。
こうやってダッシュボードを構築していく。
また、各ウィジェットのメニューからデータをファイル保存したり、クエリを確認したりといったことが可能だ。
ちなみにログイン時のトップ画面にもダッシュボードやクエリは並んで表示される。
そんなわけで、直感的に高度なデータの閲覧画面を作成できた。
過去の自分の仕事を振り返ると、作ってきた多くの画面がこれで置き換えられそうな気がする。
個人レベルでいえば、管理画面をたくさん実装するのは良い勉強になるし、 ゲスな話になるけど社内営業的にも有効だったりする。
だが、それより一歩進んだ地点からいえば、「作らないで済むものはできるだけ作らない」という姿勢を持つことが運用上の安定に繋がるように思う。
これだけ簡単なものならば、意識の低い現場でも十分運用できるのではないだろうか。
画面作成の簡単化という面だけではなく、 テーマごとに一覧性ある形でデータを示せるということも、 日々の運用の中では効いてくると思う。