Redash パラメータ一覧

# はじめに

Redash では環境変数として設定すると動作を変更できるパラメータがたくさん存在します。

[公式ドキュメント](https://redash.io/help-onpremise/setup/settings-environment-variables.html)と実際のコードを確認しながらどんなパラメータがあるのかを調べてみました。

注意として Redash でパラメータという用語はクエリ内に `{{name}}` のように記述することで変数になるパラメータ付きクエリを指しますが、ここでは動作を変更するための値を表す用語としてパラメータと呼ぶことにします。

パラメータ付きクエリについては次の資料が参考になります。

- [kakakakakku/redash\-hands\-on: Redash study materials for beginners 📊](https://github.com/kakakakakku/redash-hands-on#パラメータ付きクエリを作ってみよう)


また、開発中の最新（master ブランチ）を対象としています。そのため、バージョンによっては指定しても反映されない可能性がありますのでご注意ください。

# パラメータ一覧

## 基本
サイト全般に関わるパラメータです。

### REDASH_STATIC_ASSETS_PATH

- `../client/dist/`
- **説明:** 静的なアセットファイルのパス

## Redis 関係
### REDASH_REDIS_URL

- **説明:** RedisのURL
- **デフォルト値:** `redis://localhost:6379/0`

### REDASH_PROXIES_COUNT

- **説明:** プロキシサーバ数
- **デフォルト値:** `1`

[werkzeug.contrib.fixers.ProxyFix](http://werkzeug.pocoo.org/docs/dev/contrib/fixers/#module-werkzeug.contrib.fixers)を参照

### REDASH_JOB_EXPIRY_TIME

- **説明:** ジョブの最長実行時間
- **デフォルト値:** `3600 * 12`

## StatsD 関係
[Graphite](https://graphite.readthedocs.io/en/latest/) クライアントの [StatsD](http://statsd.readthedocs.io/en/latest/reference.html#statsclient) に関するパラメータです。

### REDASH_STATSD_HOST

- **説明:** StatsD のアドレス
- **デフォルト値:** `127.0.0.1`

### REDASH_STATSD_PORT

- **説明:** StatsD のポート番号
- **デフォルト値:** `8125`

### REDASH_STATSD_PREFIX

- **説明:** StatsD のプレフィックス
- **デフォルト値:** `redash`

### REDASH_STATSD_USE_TAGS

- **デフォルト値:** `false`
- **説明:** StatsD メトリックでタグを使うかどうか

## データベース関係
Redash 自身のデータベースに関するパラメータです。ORM である [SQLAlchemy](https://www.sqlalchemy.org/) を使っているので、名前に `SQLALCHEMY` を含むものが多くなっています。

### REDASH_DATABASE_URL

- **説明:** データベースのURL
- **デフォルト値:** `postgresql://postgres`

### SQLALCHEMY_MAX_OVERFLOW

- **説明:** データベースの最大接続数
- **デフォルト値:** `None`

### SQLALCHEMY_POOL_SIZE

- **説明:** データベースのプール数
- **デフォルト値:** `None`

### SQLALCHEMY_DISABLE_POOL

## ワーカー関係
ワーカーに関するパラメータです。タスクキューライブラリである [Celery](http://www.celeryproject.org/) を使っているので、名前に `CELERY` を含むものが多くなっています。

### REDASH_CELERY_BROKER

- **説明:** Celery の [Broker](http://docs.celeryproject.org/en/latest/getting-started/brokers/)
- **デフォルト値:** パラメータ `REDIS_URL` の値

### REDASH_CELERY_BACKEND

- **説明:** Celery のバックエンド
- **デフォルト値:** `CELERY_BROKER`

### REDASH_CELERY_TASK_RESULT_EXPIRES

- **説明:** Celery のタスク結果をキャッシュとして保存する期間
- **デフォルト値:** `3600 * 4`

### REDASH_ADHOC_QUERY_TIME_LIMIT

- **説明:** クエリ実行のタイムアウト
- **デフォルト値:** None

## クエリ削除関係
### QUERY_RESULTS_CLEANUP_ENABLED

- **説明:** パラメータ `QUERY_RESULTS_CLEANUP_MAX_AGE` 日以上経過したクエリを削除するか
- **デフォルト値:** `true`

### QUERY_RESULTS_CLEANUP_COUNT

- **説明:** パラメータ `QUERY_RESULTS_CLEANUP_MAX_AGE` 日以上経過したクエリを削除する際の最大削除数
- **デフォルト値:** `100`

### QUERY_RESULTS_CLEANUP_MAX_AGE

- **説明:** 指定値以上経過したクエリ結果を削除する
- **デフォルト値:** `7`（単位: 日）

## ログイン関係

### REDASH_AUTH_TYPE

- **説明:** APIの認証方式 `api_key`, `hmac`, `password` のいずれか
- **デフォルト値:** `api_key`

### REDASH_INVITATION_TOKEN_MAX_AGE

- **説明:** 新規ユーザ招待トークンの有効時間
- **デフォルト値:** `604800`（単位: 秒） => 7日間
- **参考:**
  - http://pythonhosted.org/itsdangerous/#itsdangerous.TimedSerializer.loads

### REDASH_MULTI_ORG

- **説明:** 複数所属を有効にするか
- **デフォルト値:** `false`

### REDASH_COOKIE_SECRET

- **説明:** クッキーのシリアライザ
- **デフォルト値:** `c292a0a3aa32397cdb050e233733900f`

### REDASH_GOOGLE_CLIENT_ID

- **説明:** Google OAuth 2.0 のクライアントID
- **デフォルト値:** （なし）

### REDASH_GOOGLE_CLIENT_SECRET

- **説明:** Google OAuth 2.0 のクライアントシークレット
- **デフォルト値:** （なし）

### REDASH_THROTTLE_LOGIN_PATTERN

- **説明:** ログインアクセス制限パターン
- **デフォルト値:** `50/hour`（1時間に50アクセス）
- **参考:** https://flask-limiter.readthedocs.io/en/stable/#rate-limit-string-notation

### REDASH_LIMITER_STORAGE

- **説明:** ログインアクセス情報のストレージURL
- **デフォルト値:** `REDIS_URL` の値
- **参考:** http://limits.readthedocs.io/en/latest/storage.html#storage-scheme

### REMOTE_USER_LOGIN_ENABLED

- **説明:**
  - リモートログインを許可するか
  - `REDASH_REMOTE_USER_HEADER` で指定されたヘッダー付きリクエストのあったユーザ（メールアドレス）についてログインを許可する仕組み
- **デフォルト値:** `false`
- **参考:** セキュリティリスクが高いので要注意

### REDASH_LDAP_LOGIN_ENABLED

- **説明:** LDAPログインを有効にするか
- **デフォルト値:** `false`

### REDASH_LDAP_URL

- **説明:** LDAP ディレクトリの URL
- **デフォルト値:** （なし）

### REDASH_LDAP_BIND_DN

- **説明:** LDAP にバインドする DN
- **デフォルト値:** （なし）

### REDASH_LDAP_BIND_DN_PASSWORD

- **説明:** LDAP DN のパスワード
- **デフォルト値:** （なし）

### REDASH_LDAP_DISPLAY_NAME_KEY

- **説明:** LDAP 表示名のキー
- **デフォルト値:** `displayName`

### REDASH_LDAP_EMAIL_KEY

- **説明:** LDAP メールのキー
- **デフォルト値:** `mail`

### REDASH_LDAP_CUSTOM_USERNAME_PROMPT

- **説明:** LDAP 表示名とメールのプロンプト
- **デフォルト値:** `LDAP/AD/SSO username:`

### REDASH_LDAP_SEARCH_TEMPLATE

- **説明:** LDAP データ検索時のテンプレート
- **デフォルト値:** `(cn=%(username)s)`

### REDASH_SEARCH_DN

- **説明:** LDAP DN 検索時のスキーマ
- **デフォルト値:** （空）

### REDASH_REMOTE_USER_LOGIN_ENABLED

- **説明:** リモートログインの可否
- **デフォルト値:** false

### REDASH_REMOTE_USER_HEADER

- **説明:** リモートログイン時のヘッダー
- **デフォルト値:** `X-Forwarded-Remote-User`

## セキュリティ関係
### REDASH_ENFORCE_HTTPS

- **説明:** HTTPSを強制するか
- **デフォルト値:** `false`

### REDASH_ALLOW_SCRIPTS_IN_USER_INPUT

- **説明:** ユーザがテキストとして入力する値をサニタイズしないか
- **デフォルト値:** `false`

### REDASH_ALLOW_PARAMETERS_IN_EMBEDS

- **説明:**
  - Embeds でパラメータの埋め込みを許可するか
  - **SQL インジェクションにつながるので注意**
- **デフォルト値:** `false`

## SAML 関係
### REDASH_SAML_METADATA_URL

- **説明:** SAML認証用IdPのメタデータを返すURL
- **デフォルト値:** （なし）

### REDASH_SAML_LOCAL_METADATA_PATH

- **説明:** SAML認証用IdPのメタデータファイルパス
- **デフォルト値:** （なし）

### REDASH_SAML_CALLBACK_SERVER_NAME

- **説明:** SAML認証用IdPからコールバックされる Redash のホスト名
- **デフォルト値:** （なし）

### REDASH_SAML_NAMEID_FORMAT

- **説明:** SAML認証用 NameIDFormat
- **デフォルト値:** （なし）

### REDASH_SAML_ENTITY_ID

- **説明:** SAML認証用 SPを一意に表す文字列
- **デフォルト値:** （なし）

## メール関係
### REDASH_MAIL_SERVER

- **説明:** メールサーバのホスト名
- **デフォルト値:** `localhost`

### REDASH_MAIL_PORT

- **説明:** メールサーバのポート番号
- **デフォルト値:** `25`

### REDASH_MAIL_USE_TLS

- **説明:** メールサーバが TLS を使用するか
- **デフォルト値:** `false`

### REDASH_MAIL_USE_SSL

- **説明:** メールサーバが SSL を使用するか
- **デフォルト値:** `false`

### REDASH_MAIL_USERNAME

- **説明:** メールサーバのユーザ名
- **デフォルト値:** `None`

### REDASH_MAIL_PASSWORD

- **説明:** メールサーバのパスワード
- **デフォルト値:** `None`

### REDASH_MAIL_DEFAULT_SENDER

- **説明:** テストメール送信時の送信先アドレス
- **デフォルト値:** `None`

### REDASH_MAIL_ASCII_ATTACHMENTS

- **説明:** メール送信時の添付ファイル
- **デフォルト値:** `false`
- **参考:** https://pythonhosted.org/Flask-Mail/#attachments

## CORS 関係

### REDASH_HOST

- **説明:** Redash ホスト名

### REDASH_CORS_ACCESS_CONTROL_ALLOW_ORIGIN

- **説明:** CORS で許可するアクセス元ORIGIN

### REDASH_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS

- **説明:** CORS のCredential
- **デフォルト値:** `false`

### REDASH_CORS_ACCESS_CONTROL_REQUEST_METHOD

- **説明:** CORS で許可するメソッド
- **デフォルト値:** `GET,POST,PUT`

### REDASH_CORS_ACCESS_CONTROL_ALLOW_HEADERS

- **説明:** CORS で許可するヘッダ
- **デフォルト値:** `Content-Type`

## データソース（クエリランナー）関係
`REDASH_ENABLED_QUERY_RUNNERS` に`REDASH_ADDITIONAL_QUERY_RUNNERS` を加えて
 `REDASH_DISABLED_QUERY_RUNNERS` を除いたものが実行できる対象データソースになります。

### REDASH_ENABLED_QUERY_RUNNERS

- **説明:** デフォルトで有効にするデータソース文字列を `,`（カンマ）でつなげたもの

デフォルトのデータソースは [9bbce6b](https://github.com/getredash/redash/blob/9bbce6b06ab61ac54fc3d47f601e2352d4750017/redash/settings.py#L202) の時点で次の通り。

```py
# Query Runners
default_query_runners = [
    'redash.query_runner.athena',
    'redash.query_runner.big_query',
    'redash.query_runner.google_spreadsheets',
    'redash.query_runner.graphite',
    'redash.query_runner.mongodb',
    'redash.query_runner.mysql',
    'redash.query_runner.pg',
    'redash.query_runner.url',
    'redash.query_runner.influx_db',
    'redash.query_runner.elasticsearch',
    'redash.query_runner.presto',
    'redash.query_runner.hive_ds',
    'redash.query_runner.impala_ds',
    'redash.query_runner.vertica',
    'redash.query_runner.clickhouse',
    'redash.query_runner.treasuredata',
    'redash.query_runner.sqlite',
    'redash.query_runner.dynamodb_sql',
    'redash.query_runner.mssql',
    'redash.query_runner.memsql_ds',
    'redash.query_runner.mapd',
    'redash.query_runner.jql',
    'redash.query_runner.google_analytics',
    'redash.query_runner.axibase_tsd',
    'redash.query_runner.salesforce',
    'redash.query_runner.query_results'
]
```

### REDASH_ADDITIONAL_QUERY_RUNNERS

- **説明:**
  - 追加のクエリランナー
  - 複数ある場合は `,`（カンマ）でつなげる
- **デフォルト値:** （空）

### REDASH_DISABLED_QUERY_RUNNERS

- **デフォルト値:** （空）
- **説明:**
  - 除外するクエリランナー

### REDASH_SCHEMAS_REFRESH_SCHEDULE

- **説明:** データソースのスキーマ取得間隔
- **デフォルト値:** `30`（単位: 分）

## 通知関係
`REDASH_ENABLED_DESTINATIONS` の値に `REDASH_ADDITIONAL_DESTINATIONS` の値を加えたものが指定できる通知先になります。

### REDASH_ENABLED_DESTINATIONS

- **説明:** デフォルトの通知先文字列を `,`（カンマ）でつなげたもの
- **デフォルト値:** （空）

デフォルトの通知先は [9bbce6b](https://github.com/getredash/redash/blob/master/redash/settings.py#L239) の時点で次の通り。

```py
# Destinations
default_destinations = [
    'redash.destinations.email',
    'redash.destinations.slack',
    'redash.destinations.webhook',
    'redash.destinations.hipchat',
]
```

### REDASH_ADDITIONAL_DESTINATIONS

- **説明:**
  - 追加の通知先
  - 複数ある場合は `,`（カンマ）でつなげる
- **デフォルト値:** （空）
- **参考:**
  - [re:dashのAlert機能 \- Qiita](https://qiita.com/toyama0919/items/f98c8f107374223ad3a4)

### REDASH_ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE

- **説明:** アラート通知のメールタイトルテンプレート
- **デフォルト値:** `({state}) {alert_name}`

### REDASH_EVENT_REPORTING_WEBHOOKS

- **説明:**
  - イベントデータを保存する際にデータを送信するPOST先 Webhook URL
  - 複数ある場合は,（カンマ）で結合する
- **デフォルト値:** （空）

## ログ関係
### REDASH_LOG_LEVEL

- **説明:** ログレベル
- **デフォルト値:** `INFO`

### REDASH_LOG_STDOUT

- **説明:** 標準出力にログを出力するか
- **デフォルト値:** `false`

### REDASH_LOG_FORMAT

- **説明:** ログのフォーマット
- **デフォルト値:** `[%(asctime)s][PID:%(process)d][%(levelname)s][%(name)s] %(message)s`
- **サンプル:**

```
[2017-12-02 10:14:02,348][PID:5137][INFO][metrics] method=POST path=/api/events endpoint=events status=200 content_type=application/json content_length=4 duration=204.14 query_count=2 query_duration=2.90
```

### CELERYD_LOG_FORMAT

- **説明:** ワーカー（Celery）のログフォーマット
- **デフォルト値:** `[%(asctime)s][PID:%(process)d][%(levelname)s][%(processName)s] %(message)s`
- **サンプル:**

```
[2017-12-02 10:18:00,786][PID:8099][WARNING][MainProcess] celery@XXXXXXXX.local ready.
```

### REDASH_CELERYD_TASK_LOG_FORMAT

- **説明:** ワーカー（Celery）のタスクログフォーマット
- **デフォルト値:** `[%(asctime)s][PID:%(process)d][%(levelname)s][%(processName)s] task_name=%(task_name)s task_id=%(task_id)s %(message)s'`

## 実験的機能

### REDASH_FEATURE_DISABLE_REFRESH_QUERIES

- **説明:** クエリのリフレッシュを無効にするか
- **デフォルト値:** `false`

### REDASH_FEATURE_SHOW_QUERY_RESULTS_COUNT

- **説明:** クエリの結果をカウントして表示するか
- **デフォルト値:** `true`

### REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL

- **説明:** パーミッション管理を表示するか
- **デフォルト値:** `false`

### REDASH_FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS

- **説明:** カスタム JS の VISUALIZATION を許可するか
- **デフォルト値:** `false`

### REDASH_FEATURE_AUTO_PUBLISH_NAMED_QUERIES

- **説明:** クエリの名前を変更した際に自動的に「公開」状態にするか
- **デフォルト値:** `true`

### REDASH_FEATURE_DUMB_RECENTS

- **説明:** 最新のクエリ・ダッシュボードの取得数を制限する
- **デフォルト値:** `false`

## その他
### REDASH_SENTRY_DSN

- **説明:** エラートラッカー [Sentry](https://sentry.io/welcome/) クライアントのホスト名
- **デフォルト値:** （空）

### REDASH_DATE_FORMAT

- **説明:** 日付値のフォーマット
- **デフォルト値:** `DD/MM/YY`

### REDASH_VERSION_CHECK

- **説明:** 最新の安定版がリリースされているかのチェックを行うか
- **デフォルト値:** `true`

### REDASH_BIGQUERY_HTTP_TIMEOUT

- **説明:** BigQuery のタイムアウト時間
- **デフォルト値:** `600`

### REDASH_SCHEMA_RUN_TABLE_SIZE_CALCULATIONS

- **説明:** デーブルスキーマの行数をカウントするか
- **デフォルト値:** `false`

### REDASH_DASHBOARD_REFRESH_INTERVALS

- **説明:** ダッシュボードのリフレッシュで指定可能な間隔
- **デフォルト値:** `60,300,600,1800,3600,43200,86400`（単位：秒）

### REDASH_QUERY_REFRESH_INTERVALS

- **説明:** クエリのリフレッシュで指定可能な間隔
- **デフォルト値:** `60, 300, 600, 900, 1800, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, 32400, 36000, 39600, 43200, 86400, 604800, 1209600, 2592000`（単位：秒）