redash

Redashの内部データベースに直接クエリーする

Redashを使い込んでいくと、だんだんRedash内部のMetadataデータベースに直接クエリーをかけたくなってきます。

どんな用途があるのか上記記事が色々と参考になりますが、私の環境ではバージョンの違いなのか、記事に書いているようなユーザー名とパスワードでDBにアクセスすることができなかったので、Postgreの新規ユーザーを作りRedashでアクセスするまでの手順をまとめました。AMIからRedash環境を構築した場合の話ですのでDockerから作っている人には必要のない手順かと思います。


まずはsshでRedashを立ち上げているサーバーにログインし、postgresユーザーでredashデータベースに接続します。

sudo -u postgres psql redash

現状のユーザー一覧を確認します。

redash=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 redash    |                                                            | {}

redashというユーザーが存在することがわかりますが、今回はこれとは別に読み込み専用のユーザーを作成しようと思います。ユーザー名はredash_reader、パスワードredash_readerで作成しますので、自由に変更してください。

#redash_readerを"redash_reader"というパスワードで作成
redash=# CREATE ROLE redash_reader WITH PASSWORD 'redash_reader' NOCREATEROLE NOCREATEDB NOSUPERUSER LOGIN;

#redash_readerユーザーにSELECT権限を付与
redash=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO redash_reader;

念のためredash_readerユーザーが作成されたことを確認します。

redash=# \du
                                     List of roles
   Role name   |                         Attributes                         | Member of
---------------+------------------------------------------------------------+-----------
 postgres      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 redash        |                                                            | {}
 redash_reader |                                                            | {}

後はredashの管理画面のDATA SOURCESからPostgreSQLを選択肢、先ほど作成したユーザー名とパスワードを入力。Database Nameはredashです。
Screen Shot 2018-02-01 at 12.18.50.png

Test Connectionが成功すればあとはクエリーを書くだけです。

Screen Shot 2018-02-01 at 12.28.52.png