Redashでクエリを投げてみる
はじめに
先日Redashをローカル環境にインストールしたので、今回はデータベースにデータを入れて、Redashでクエリを投げるところまでを実施します。
Redashのインストールについてはこちらをご覧ください。
環境
MacBookAirを使用しています。OSなどは次の通りです。
$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G14033
$python --version
Python 3.7.3
$docker --version
Docker version 20.10.0, build 7287ab3
Redashを起動した状態を想定しています。
$docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
caa3348d587a redash_scheduler "/app/bin/docker-ent…" 43 minutes ago Up 42 minutes 5000/tcp redash_scheduler_1
00e34fe2ef97 redash_worker "/app/bin/docker-ent…" 43 minutes ago Up 42 minutes 5000/tcp redash_worker_1
0f60c28cecbd redash_server "/app/bin/docker-ent…" 43 minutes ago Up 43 minutes 0.0.0.0:5000->5000/tcp, 0.0.0.0:5678->5678/tcp redash_server_1
518d2c7aad0d postgres:9.5-alpine "docker-entrypoint.s…" 43 minutes ago Up 43 minutes 0.0.0.0:15432->5432/tcp redash_postgres_1
c1e85b4cfa69 redis:3-alpine "docker-entrypoint.s…" 27 hours ago Up 27 hours 6379/tcp redash_redis_1
d32426258263 djfarrelly/maildev "bin/maildev --web 8…" 27 hours ago Up 27 hours 25/tcp, 0.0.0.0:1080->80/tcp redash_email_1
データ準備
データは簡単に手に入るscikit-learnのボストンデータセットを使用します。
ボストンの住宅価格のデータで、506行14列です。
データ項目についてはこちらに詳しく書かれているので、説明は省きます。
まずはこのデータをscikit-learnから取ってきて、csvファイルにダンプしようと思います。
そのためにpythonのコードを実行します。
import pandas as pd
import sklearn.datasets as skd
data = skd.load_boston()
df_X = pd.DataFrame(data.data, columns=data.feature_names)
df_y = pd.DataFrame(data.target, columns=['y'])
df = pd.concat([df_X, df_y], axis=1)
df.to_csv('data.csv', index=True, index_label='ID')
python data.py
で実行すると、data.csv
が作成されます。
これをこの後、DBに投入します。
データベースの準備
今回はデータベースはRedashを起動するときに作成されるPostgreSQLを使用します。
先ほどのcsvファイルや、sqlファイルをdocker-compose
で作成されたコンテナ内に持っていきたいので、ローカルのフォルダをマウントしておきます。
docker-composeの設定を少し変えたいので、以下のファイルについて、61行目、62行目を追加しました。
(中略)
50 postgres:
51 image: postgres:9.5-alpine
52 # The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3
53 # improvement on my personal machine). We should consider moving this into a dedicated Docker Compose configuration for
54 # tests.
55 ports:
56 - "15432:5432"
57 command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF"
58 restart: unless-stopped
59 environment:
60 POSTGRES_HOST_AUTH_METHOD: "trust"
61 volumes:
62 - ../data:/tmp/data
(中略)
docker-compose build
とdocker-compose up -d
を実行して、設定を反映させます。
データベース作成とテーブル作成用のsqlファイルを作成しておきます。
DROP DATABASE IF EXISTS boston_datasets;
CREATE DATABASE boston_datasets;
CREATE TABLE realestate
(
ID INTEGER,
CRIM NUMERIC,
ZN NUMERIC,
INDUS NUMERIC,
CHAS NUMERIC,
NOX NUMERIC,
RM NUMERIC,
AGE NUMERIC,
DIS NUMERIC,
RAD NUMERIC,
TAX NUMERIC,
PTRATIO NUMERIC,
B NUMERIC,
LSTAT NUMERIC,
y NUMERIC
);
上2つのsqlファイルを実行。
$docker-compose run --rm postgres psql -f /tmp/data/setup_db.sql -h postgres -U postgres
Creating redash_postgres_run ... done
DROP DATABASE
CREATE DATABASE
$cat ../data/setup_db.sql
DROP DATABASE IF EXISTS boston_datasets;
CREATE DATABASE boston_datasets;
(base) DyamaguchiMBA:redash $docker-compose run --rm postgres psql -f /tmp/data/setup_tbl.sql -h postgres -U postgres -d boston_datasets
Creating redash_postgres_run ... done
CREATE TABLE
コンテナに入って確認。
$docker exec -it redash_postgres_1 bash
bash-5.0# psql -U postgres -h postgres -d boston_datasets
psql (9.5.24)
Type "help" for help.
boston_datasets=# \dt
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | realestate | table | postgres
(1 row)
boston_datasets=# \q
bash-5.0# exit
確かにrealestateテーブルが作成できている。
このテーブルに対して、csvファイルのデータを挿入。
$docker-compose run --rm postgres psql -h postgres -U postgres -d boston_datasets -c "copy realestate from '/tmp/data/data.csv' encoding 'utf8' csv header delimiter ','"
Creating redash_postgres_run ... done
COPY 506
ここまででデータベース、テーブル、データがPostgreSQLに入ったことになる。
Redashの設定
次にRedashからPostgreSQLへの接続について確認していく。
基本的に、下図のように設定すればいいはず。
ここでPasswordは空欄でOK。
念のため、Test Connectionを実施して、正しく接続を確認した。
クエリ発行
画面左の「Queries」からデータソースを選択すると、先ほど作ったDBやテーブルが見える。
SQLとしてselect * from realestate
を実行してみると、下図のように結果が返ってきました。
まとめ
データの準備からクエリ発行まで実施しました。
次はいよいよ可視化していきたいと思います。
Author And Source
この問題について(Redashでクエリを投げてみる), 我々は、より多くの情報をここで見つけました https://qiita.com/dyamaguc/items/29ed200d67f9100da5c2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .