この記事は自分用メモみたいなもの
目標
- ローカルでRedashを使えるようにする
- RedashのデータソースにSQL Serverを使う
手順
- 各種コンテナの立ち上げ
- データベースの作成
- データの投入
- Redashの接続
構築
1. 各種コンテナの立ち上げ
今回はローカルのRedash/SQL Serverともにコンテナを使って立ち上げる
Redashについてはこちらの記事にかかれている方法で立ち上げることができるが、SQL Serverを使うためには少し修正が必要になる
1.1 SQL Serverを使えるRedashのDockerイメージ作成
こちらのリポジトリから作られるdocker-compose.ymlをそのまま使うと、Redashコンテナ内のpymssql
のバージョンの関係でSQL Serverにうまく接続できない
具体的にはredash/redash:8.0.0.b32245
のイメージのみ変更が必要なので、このイメージを元にSQL Serverを使えるイメージを生成する
以下のようなDockerfileを作成する
FROM redash/redash:8.0.0.b32245
RUN pip install --upgrade "pymssql==2.1.4" --user
上記Dockerfileが配置されたディレクトリにて以下コマンドを実行する
今回はredash-test
というイメージ名で作成する
docker build -t redash-test:1.0.0 .
1.2 Redash/SQL Serverのコンテナ立ち上げ
こちらにて用意されるdocker-compose.ymlを元に以下のようなdocker-compose.ymlファイルを作成
version: "2"
x-redash-service: &redash-service
image: redash-test:1.0.0
depends_on:
- postgres
- redis
env_file: /opt/redash/env
restart: always
networks:
- redash
services:
server:
<<: *redash-service
command: server
ports:
- "5000:5000"
environment:
REDASH_WEB_WORKERS: 4
scheduler:
<<: *redash-service
command: scheduler
environment:
QUEUES: "celery"
WORKERS_COUNT: 1
scheduled_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
adhoc_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "queries"
WORKERS_COUNT: 2
redis:
image: redis:5.0-alpine
restart: always
networks:
- redash
mssql:
image: mcr.microsoft.com/mssql/server:2017-latest
ports:
- 1433:1433
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD={任意のパスワード※}
- MSSQL_LCID=1041
- MSSQL_COLLATION=Japanese_CI_AS
networks:
- redash
postgres:
image: postgres:9.6-alpine
env_file: /opt/redash/env
volumes:
- /opt/redash/postgres-data:/var/lib/postgresql/data
restart: always
networks:
- redash
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
restart: always
networks:
- redash
networks:
redash:
driver: bridge
※mssqlにて設定するパスワード
半角英数字で8文字あればとりあえずよい
ポリシーはこちら
このdocker-compose.ymlが配置されたディレクトリにてdocker-compose up -d
を実行
実行後docker container ls
等で以下のように起動が確認できていればOK
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3bce650d8d6 redash/nginx:latest "nginx -g 'daemon of…" 12 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp data_nginx_1
6e1d13e1b92f redash-test:1.0.0 "/app/bin/docker-ent…" 16 seconds ago Up 12 seconds 5000/tcp data_adhoc_worker_1
b31aeb169b19 redash-test:1.0.0 "/app/bin/docker-ent…" 16 seconds ago Up 12 seconds 5000/tcp data_scheduler_1
3d5ebc25e254 redash-test:1.0.0 "/app/bin/docker-ent…" 16 seconds ago Up 11 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp data_server_1
78e2d2a931f5 redash-test:1.0.0 "/app/bin/docker-ent…" 16 seconds ago Up 12 seconds 5000/tcp data_scheduled_worker_1
b6c00c560f88 mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/nonr…" 18 seconds ago Up 15 seconds 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp data_mssql_1
d2d166c58f9e postgres:9.6-alpine "docker-entrypoint.s…" 18 minutes ago Up 15 seconds 5432/tcp data_postgres_1
0d7286213d72 redis:5.0-alpine "docker-entrypoint.s…" 18 minutes ago Up 15 seconds 6379/tcp data_redis_1
起動が確認できた状態でlocalhost:5000にアクセスするとRedashの起動が確認できる
2. データベースの作成
2.1 SSMSにてDBに接続
今回はSQL Server Management Studio (SSMS)を用いる
アプリケーションを開くと接続情報の入力画面が現れるので、以下の通り入力する
(※パスワードはdocker-compose.ymlにて設定したmssql用のパスワードを入力)
Server nameの部分は<hostname>,<port>
なので注意
2.2 SSMSからデータベースの作成
この時点ではデフォルトのデータベースしか用意されていない
デフォルト以外のデータベースを使いたい場合はこの時点で作成しておく
※本当はコンテナ立ち上げ時にできるが、一旦は手動作成する
今回は以下の通りTestDbという名前でデータベースを作成した
3. データの投入
今回は以下のようなcsvを投入することでDB内にテーブル・データを用意する
id, name
1,sample
2,test
3,hoge
SSMSにて先程作成したデータベース名を右クリックし、「Tasks > Import Flat File...」を選択
するとImportするファイルを選択できるので、先程作成したファイルを選択(今回はtest.csvというファイル名にしている)
またこの時点でテーブル名とスキーマを選択できる
今回は投入するスキーマをdbo
、テーブル名をsample_table
としている
その後は画面の指示に従い操作する
4. Redashの接続
再びRedashに戻る
画面右上のボタンから設定画面へ遷移
遷移した画面のうち「Data Sources」タブから「+ New Data Source」を選択
ボタンを押下するとData Sourceの選択画面が現れる
選択肢の中からMicrosoft SQL Server
を選択(検索窓にSQL Serverといれるとすぐ見つかる)
進んだ画面で接続情報をそれぞれ以下の通り入力
TDS Version, Character Set, Portは編集しない
接続情報を登録すると以下のような画面に遷移する
中央下の「Test Connection」ボタンを押下し、右下に「Success」という文字が出れば接続できている
クエリを実行してみる
以上でローカルのRedash/SQL Serverの環境はできた
先程SQL Serverに投入したデータを確認する
クエリ作成画面へ遷移する
画面左上の「Create」ボタンを押下、そこで現れた選択肢のうち「Query」を選択
遷移した先がクエリエディタになっているため、先程作成したテーブルをselectする
selectする際スキーマ名dbo
もつける必要がある点に注意