要点だけ書いとく。
dockerpull で redash のイメージをローカルに落として起動しておく。
docker pull redash/redash
その後、docker-compose.yml を作成しておいて(python使えるようにREDASH_ADDITIONAL_QUERY_RUNNERS設定してる)
version: '2'
services:
server:
image: redash/redash:latest
command: server
depends_on:
- postgres
- redis
ports:
- "5000:5000"
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_COOKIE_SECRET: veryverysecret
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
worker:
image: redash/redash:latest
command: scheduler
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
QUEUES: "queries,scheduled_queries,celery"
WORKERS_COUNT: 2
redis:
image: redis:3.0-alpine
postgres:
image: postgres:9.5.6-alpine
volumes:
- /opt/postgres-data:/var/lib/postgresql/data
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
docker-compose upする
docker-compose up
その後、redashにログインしてpostgresのデータソースで以下を設定
pythonのデータソースの設定の仕方は以下。
Modules to import prior to running the scriptは、importするものがあればカンマ区切りで書き込んでおく。
そして、datasourceにpythonえらんで、query作成で以下を入力
query='\
select \
count(*) AS count \
from queries \
'
values = execute_query('postgres', query)['rows']
add_result_row(result, {'name': 'result', 'count': values[0]['count']})
add_result_column(result, 'name', '', 'date')
add_result_column(result, 'count', '', 'date')
Execute押すと結果出力できる。
google spreadsheetやらDB、GAなどを結合していろんなレポートだせるな。いける、いけるぞこれは。