そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

Re:dashの小技いろいろ

職場でも既存の画面を置き換えたりして徐々に布教できてきたRe:dash。

blue1st-tech.hateblo.jp

blue1st-tech.hateblo.jp

クエリを記述するだけなのでスタッフの要望に素早く対応できるし、数値に疑問があった時にもチェックしやすい。

それに、ダッシュボードという形でまとめられることにより、指標間の関係性にも気を向けることができる。

意識高いことを切々と語るよりも実際的なメリットを提示するのが、新しいことをはじめるときには有効ですな。

そんなわけで実際的に使っていく上で必要で色々調べたことをメモってみた。


CLIでユーザアカウントを追加する

WebUI上でユーザアカウントを作成するならばメール送信の設定を行う必要があるが、 僕がやってたようなDockerでの起動の場合、メール送信の環境を整えるのはちょっと面倒だったりする。

ユーザアカウントの作成のみならば、ひとまずCLI上の操作で行うことができる。

仮にredashのコンテナ名がredash_redash_1であったとして、manage.pyを叩くことでユーザアカウントの追加ができる。

$ docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS                              PORTS                                                                          NAMES
c54fafa81951        redash/nginx:latest                        "nginx -g 'daemon off"   16 seconds ago      Up 15 seconds                       443/tcp, 0.0.0.0:8086->80/tcp                                                  redash_redash-nginx_1
d4d80fc70743        redash/redash:latest                       "supervisord -c /opt/"   17 seconds ago      Up 16 seconds                       0.0.0.0:5000->5000/tcp, 9001/tcp                                               redash_redash_1
cd9cc7e05f6f        postgres:9.3                               "/docker-entrypoint.s"   19 seconds ago      Up 17 seconds                       5432/tcp                                                                       redash_postgres_1
201acbf73459        redis:2.8                                  "docker-entrypoint.sh"   19 seconds ago      Up 17 seconds                       6379/tcp                                                                       redash_redis_1
$ docker exec -it redash_redash_1 ./manage.py users create [NAME] [MAIL]

引数としてユーザ名とメールアドレスを渡すとパスワードを求められるので、入力するとアカウントが作成される。


クエリのパラメータを指定する

クエリとして{{PARAM}}として記述することにより、URLにパラメータp_PARAMとして指定した値を用いて実行することができる。

例えば下記のように記述すると・・・

f:id:blue1st:20160904223255p:plain

パラメータの入力フォームが表示され、その入力値を用いた結果が表示される。

(フォームに値を入れたうえでリロードボタンを押してSQLを再実行する感じ。これなら入力欄だけでなくボタンも欲しいところだが・・・)

Text・Number・Date・Date and Timeの4つの属性を選択できる。

f:id:blue1st:20160904223641p:plain

ちなみにこのときの入力して保存した値がパラメータ未指定の場合がデフォルト値になるようだ。


先に述べたように、このパラメータはURLとして記述できる。

f:id:blue1st:20160904223650p:plain

したがって、例えば関連するデータ表示においてCONCATなんかを使ってリンク記述したり、 後述するようなフォームを作ったりして活用することができる。


Textboxでフォームを記述する

ダッシュボードのTextBoxにはHTMLを記述できるが、デフォルトではFormタグは無効化されている。

docker-compose.ymlのenvironment項にREDASH_ALLOW_SCRIPTS_IN_USER_INPUTを記述することで、 フォームを用いることができるようになる。

  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
    REDASH_ALLOW_SCRIPTS_IN_USER_INPUT: "true"
    REDASH_DATE_FORMAT: "YYYY/MM/DD"
  external_links:
    - sample_mysql

f:id:blue1st:20160904223454p:plain

ちなみにベースとなるURIは#とか./みたいなのじゃダメで、 横着せずに/dashboard/[ダッシュボード名]みたいな感じに絶対パスじゃないと上手く動かなそうだ。


表に絞込用のフィルタをつける

カラム名として::filter::multi-filterを付加することで、 表示項目を絞り込むフィルタをつけることができる。

f:id:blue1st:20160904223512p:plain

f:id:blue1st:20160904223519p:plain


日付をYYYY/MM/DDフォーマットに変える

date型カラムはデフォルトだとDD/MM/YYフォーマットで表示されてしまって日本人には読み取りづらい。

f:id:blue1st:20160904223537p:plain

そんなわけでconcatで文字列化したりとか色々やってたんだけど、どうやら環境変数で変更できたようだ。

docker-compose.ymlのenvironment項にREDASH_DATE_FORMATの記述を追加することで好みのフォーマットに変更できる。

  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
    REDASH_ALLOW_SCRIPTS_IN_USER_INPUT: "true"
    REDASH_DATE_FORMAT: "YYYY/MM/DD"
  external_links:
    - sample_mysql

f:id:blue1st:20160904223556p:plain

ただこれ、どうもピボットテーブルの方までは効いてくれなそうなのが残念。


全く横道な話になるけど、Windows10にはSnipping Toolなる範囲指定画面キャプチャ+注訳編集できるものが標準で入ってたのね。

前回の記事とかキャプチャ画像編集が地味に面倒臭くて萎えたんだけど、こんな楽な手段があったとは。