redashをオンプレサーバで運用していくうちに見つけた、
ドキュメントにまとまっていない仕様やバグをまとめた。
確認したバージョンはv1.0.1またはv1.0.3。
以降のバージョンでは直っているかも?
クエリパラメータ付きのSQLはrefreshされない
クエリパラメータ付きのSQLとは?
- URLにクエリパラメータを指定することで変数をSQLに埋め込める機能
- re:dashでsqlに変数を埋め込む - Qiitaを参照
症状
- クエリパラメータ付きのSQLはrefresh scheduleを設定しても定期実行されない
- issueも上がっている
対策
- 上のissueでも紹介されているが、?maxAge=0を指定するとキャッシュ結果は再利用されずその場で実行することができる
- が、手動でURLを叩く必要がある
クエリパラメータ付きのクエリは、そのデータソースに対してView Onlyのユーザは閲覧できない
症状
- 通常のSQLは、そのデータソースに対してView Onlyのユーザでも閲覧はできる(編集・実行はできない)が、
クエリパラメータ付きのクエリはView Onlyのユーザがアクセスすると
Error running query: You do not have permission to run queries with this data source.
と表示され閲覧もできない。 - issueは上がってないようだが、discussionフォーラムには上がっている
対策
- 権限をView OnlyからFull Accessに変更する。
- Full Access権限を与えたくないユーザにFull Accessを付与することになるので、
適切な権限管理ができない。
APIでクエリパラメータ付きのSQLを渡せない
症状
- SQL編集画面で左下に表示されるiframe embedのURLにクエリパラメータを渡せない
(渡してもデフォルト値がSQLに埋め込まれる) - issueも上がっていて、PRも進行中
対策
- PR待ち?
他の人が作ったdashboard・queryはeditできない
症状
- 読んで字のごとく。dashboardではAdd widgetなどができず(ボタンが表示されない)、
queryではsaveなどができない(やはりボタンが表示されない)
対策
- access_permissionsテーブルを使って権限を設定する
- 以下のissueでimplementされたとしているのはこのことか?
- https://github.com/getredash/redash/issues/1028
- https://github.com/getredash/redash/issues/286
Table "public.access_permissions"
Column | Type | Modifiers
-------------+------------------------+-----------------------------------------------------------------
id | integer | not null default nextval('access_permissions_id_seq'::regclass)
object_type | character varying(255) | not null
object_id | integer | not null
access_type | character varying(255) | not null
grantor_id | integer | not null
grantee_id | integer | not null
Indexes:
"access_permissions_pkey" PRIMARY KEY, btree (id)
"access_permissions_grantee_id" btree (grantee_id)
"access_permissions_grantor_id" btree (grantor_id)
"access_permissions_object_id" btree (object_id)
"access_permissions_object_type" btree (object_type)
Foreign-key constraints:
"access_permissions_grantee_id_fkey" FOREIGN KEY (grantee_id) REFERENCES users(id)
"access_permissions_grantor_id_fkey" FOREIGN KEY (grantor_id) REFERENCES users(id)
- access_permissionsテーブルの各カラムに以下の値を入れてINSERTする
-
object_type
に権限を付与するオブジェクトのテーブル(dashboards
orqueries
)を -
object_id
に`権限を付与するオブジェクトのテーブルのidを -
access_type
に権限(view
ormodify
ordelete
)を -
grantor_id
に権限を付加したユーザのidを -
grantee_id
に権限を付与されたユーザのidを
-
- 例:
INSERT INTO access_permissions (object_type, object_id, access_type, grantor_id, grantee_id) VALUES ('dashboards', 9, 'modify', 1, 4);
- v1.0.3現在UIは存在しない?ので、直接テーブルを触る必要がある
9:00にrefresh scheduleを設定すると0:00に実行される
症状
- 例えばサーバのタイムゾーンがAsia/Tokyoのとき、
9:00にrefreshされるよう設定すると、
queriesテーブルのscheduleカラムにはUTCに変換され0:00として保存され、
実際のrefreshも0:00に実行される
対策
- issueを立てたところ、サーバのタイムゾーンをUTCに変更するしかないようだ