Redash v3 の変更内容一覧を CHANGELOG と Pull Request から確認する

# はじめに

2017年11月13日にリリースされた Redash v3 の変更内容について [CHANGELOG](https://github.com/getredash/redash/blob/master/CHANGELOG.md) と [Pull Request](https://github.com/getredash/redash/pulls?q=is%3Apr+is%3Aclosed) から確認しました。

v2 系の最終バージョン v2.0.1 のリリースから1ヶ月経っていないのですが、[Query Result データソース](https://github.com/getredash/redash/pull/2072) 等の新規データソースの対応の他、多数の機能追加やバグフィックスなどボリュームがありました。

また、他のバージョンの変更内容については次のエントリにまとめていますので、バージョンアップを検討中の方などの参考になればと思います。

- [Redash v5 の変更内容一覧を CHANGELOG と Pull Request から確認する \- Qiita](https://qiita.com/kyoshidajp/items/6d2ec67670d58c790b05)
- [Redash v4 の変更内容一覧を CHANGELOG と Pull Request から確認する \- Qiita](https://qiita.com/kyoshidajp/items/d11390fdc74dcb79cdab)

# v3.0.0 - 2017-11-13

## 追加

- [対応データソースに Query Result データソースを追加](https://github.com/getredash/redash/pull/2072)
  - データソースに関係なく複数の集計結果を横断した集計が出来る機能で、詳細については以下のページを参照
     - [Querying Existing Query Results \| Redash](https://redash.io/help/user-guide/querying/query-results-data-source)
     - [Redash v3\.0\.0で追加されるQuery Resultsデータソースについて \- ariarijp’s blog](http://ariarijp.hatenablog.com/entry/redash-advent-calendar-day-1)
- [Athena で Glue catalog からスキーマを読み込む](https://github.com/getredash/redash/pull/2045) [@myouju](https://github.com/myouju)
- [エントリポイントを経由して、Docker コンテナ内で任意のコマンドを実行可能に](https://github.com/getredash/redash/pull/2054) [@jezdez](https://github.com/jezdez)
- [ユーザ招待リンクの有効期間を設定に追加](https://github.com/getredash/redash/pull/2021) [@hhamalai](https://github.com/hhamalai)
  - 環境変数 `REDASH_INVITATION_TOKEN_MAX_AGE` で、デフォルトは `60 * 60 * 24 * 7`秒（1週間）
- [Redshift で新しい ACM ルート証明書をサポート](https://github.com/getredash/redash/pull/2044)
  - 詳細は Amazon のドキュメントを参照
     - [SSL 接続用 ACM 証明書への移行 \- Amazon Redshift](https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/connecting-transitioning-to-acm-certs.html)
- [Redshift Spectrum をサポート](https://github.com/getredash/redash/pull/2038) [@atharvai](https://github.com/atharvai)
  - Spectrum については AWS ブログを参照
     - [Amazon Redshift Spectrum – S3のデータを直接クエリし、エクサバイトまでスケール可能 \| Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/amazon-redshift-spectrum-exabyte-scale-in-place-queries-of-s3-data/)
- [MongoDB で allowDiskUse をサポート](https://github.com/getredash/redash/pull/2037)
  - [alloDiskUse](https://docs.mongodb.com/manual/reference/command/aggregate/#aggregate) は集計時に一次ファイルへの書き込みを許可する MongoDB のオプション
  - クエリに指定されていた場合に有効にする
- [SQLAlchemy コネクションプールの無効オプションを指定可能に](https://github.com/getredash/redash/pull/2033)
- [クエリ実行時間の上限設定を追加](https://github.com/getredash/redash/pull/2032)
  - 環境変数 `REDASH_ADHOC_QUERY_TIME_LIMIT` で、デフォルトは制限なし
- [新規ユーザの招待メール送信を無効にするオプションを追加](https://github.com/getredash/redash/pull/2031)
- [対応データソースに Azure SQL Data Warehouse を追加](https://github.com/getredash/redash/pull/1906) [@kitsuyui](https://github.com/kitsuyui)
- [対応データソースに Prometheus を追加](https://github.com/getredash/redash/pull/2003) [@yershalom](https://github.com/yershalom)
- [Flask-Limiter storage engine を追加](https://github.com/getredash/redash/pull/1989)
  - `REDIS_URL`（環境変数 `REDASH_REDIS_URL`、`REDIS_URL` を順に確認し、なければ `redis://localhost:6379/0`） とは別に Flask のストレージ場所を指定可能になった
  - 環境変数 `REDASH_LIMITER_STORAGE` で、デフォルトは `REDIS_URL` の値
  - パスの記述詳細については [Flask\-Limiter](https://flask-limiter.readthedocs.io/en/stable/#configuration) の **RATELIMIT_STORAGE_URL** を参照
- [Unicode 型のエラーハンドリングオプションを指定可能に](https://github.com/getredash/redash/pull/1961) [@fan-t-endo](https://github.com/fan-t-endo)
  - Unicode 文字列から任意の文字コードの文字列に変換がエラーになった場合の処理方法（詳細はドキュメントの [Unicode 型](https://docs.python.org/ja/2.7/howto/unicode.html#the-unicode-type)を参照）
  - 環境変数 `REDASH_CSV_WRITER_ERRORS ` で、デフォルトは `strict`（`UnicodeDecodeError` を送出）
- [PostgreSQL データソースに sslmode オプションを指定](https://github.com/getredash/redash/pull/1876) [@TylerBrock](https://github.com/TylerBrock)
- [カウンター表示で数値のフォーマットを指定可能に](https://github.com/getredash/redash/pull/1920) [@deecay](https://github.com/deecay)
- [Query based drop down parameter](https://github.com/getredash/redash/pull/1928) [@rohithmenon](https://github.com/rohithmenon)
- [MySQL で複数クエリのサポートとコネクションのタイムアウトを指定](https://github.com/getredash/redash/pull/1955)
  - タイムアウトは60秒固定
- [マルチフィルタで全選択を可能に](https://github.com/getredash/redash/pull/1946) [@Posnet](https://github.com/Posnet)
- [LDAP (Active Directory) をサポート](https://github.com/getredash/redash/pull/1836) [@amarjayr](https://github.com/amarjayr)

## 変更

- [クエリをフォークした際にパラメータもコピーする](https://github.com/getredash/redash/pull/2068) [@kyoshidajp](https://github.com/kyoshidajp)
  - ここでのパラメータとはクエリ中に `{{param1}}` のような記述で文字列を置き換える機能
  - パラメータの詳細は [Query Parameters \| Redash](https://redash.io/help/user-guide/querying/query-parameters) を参照
- [リフレッシュ API の実行時にクエリ API キーではなくユーザの API キーでのみ実行可能にする](https://github.com/getredash/redash/pull/2071)
  - リフレッシュ API はクエリを実行する API
  - API キーにはクエリ別に発行されるものと、ユーザ別に発行されるものがある
- [フロントエンドのコードをリファクタリング](https://github.com/getredash/redash/pull/2056)
  - `app/{components,pages,services,visualizations}` をオートロードパスへ追加
  - `import` で `@` を `client/app` へのエイリアスとすることで相対パス指定から簡単な絶対パス指定へ
- [ページの先頭入力項目に自動でフォーカスをセットする](https://github.com/getredash/redash/pull/2028) [@kyoshidajp](https://github.com/kyoshidajp)
  - 入力時にカーソルをあてる手間がなくなった
- [gunicorn を 19.7.1 にバージョンアップ](https://github.com/getredash/redash/pull/2037)
  - [gunicorn](http://gunicorn.org/) は Python の WSGI HTTP サーバ
- [ログのフォーマットが変更可能に](https://github.com/getredash/redash/pull/2030)
  - 本体のログ、worker のログ、worker のタスクログがそれぞれ `REDASH_LOG_FORMAT`, `REDASH_CELERYD_LOG_FORMAT`, `REDASH_CELERYD_TASK_LOG_FORMAT` として指定可能
  - デフォルトは[差分コード](https://github.com/getredash/redash/pull/2030/files)を参照
- [チャート系列を名前でソートする](https://github.com/getredash/redash/pull/2029) 
- [Docker のテスト実行で対象テストファイルを指定可能に](https://github.com/getredash/redash/pull/2004) [@meinac](https://github.com/meinac)
- [モニタの outdated queries count をすでに保存されている Redis から取得する](https://github.com/getredash/redash/pull/2008)
- [ユーザの権限に基づいたリンクを表示](https://github.com/getredash/redash/pull/2007)
  - アラートやクエリスニペットなど、権限がないユーザにも表示されていた
- [Cassandra のドライバーをバージョンアップ](https://github.com/getredash/redash/pull/1981) [@yershalom](https://github.com/yershalom)
  - [cassandra-driver](https://github.com/datastax/python-driver) を `3.1.1` から `3.11.0` へ
- [Docker compose 起動時に各サービスを自動で再起動するようにした](https://github.com/getredash/redash/pull/1976) [@muddydixon](https://github.com/muddydixon)
  - 便利
- [Python 3 への移行準備として Python 2 コードを修正](https://github.com/getredash/redash/pull/1995) [@cclauss](https://github.com/cclauss)
  - Python 2 系でも [`__future__`](https://docs.python.org/3/library/__future__.html) モジュールを使うことで、一部 3 系の記述が行えるようになる
     - print を文から関数へ
     - 例外のキャッチで `,` の代わりに `as`
- [コホートグラフをより簡単に使えるようにして、必要なデータを確認しやすくした](https://github.com/getredash/redash/pull/1984)
- [フロントエンドの Markdown ライブラリを変更](https://github.com/getredash/redash/issues/2146) [@alexmuller](https://github.com/alexmuller)
  - [marked](https://www.npmjs.com/package/marked) から [mardown](https://www.npmjs.com/package/markdown) に
  - これによって、クエリの description 等で HTML を直接記述できなくなった
     - markdown で[対応の PR](https://github.com/evilstreak/markdown-js/pull/132) は出ているが、数年間そのままになっている
- [Salesforce の実行時エラー内容を改善](https://github.com/getredash/redash/pull/1727) [@akiray03](https://github.com/akiray03)
  - 少ないコード修正量で詳細がかなり分かりやすくなっている
- [Custom JS code visualization improvements](https://github.com/getredash/redash/pull/1873) [@deecay](https://github.com/deecay)
- [dql のバージョンを 0.5.24 にアップデート](https://github.com/getredash/redash/pull/1954) [@aterreno](https://github.com/aterreno)
 - [dql](https://github.com/stevearc/dql) は DynamoDB 向けの SQL 風インターフェースの Python ライブラリ
- [Cassandra の get_schema と SortedSet のサポート](https://github.com/getredash/redash/pull/1930) [@mfouilleul)](https://github.com/mfouilleul)
- [非推奨になった `ng-annotate` を babel プラグインに変更](https://github.com/getredash/redash/pull/1863) [@44px](https://github.com/44px)
- [Python ライブラリをアップデート](https://github.com/getredash/redash/pull/1898) [@alison985](https://github.com/alison985)
  - 対象は `httplib2`, `cryptography`, `pyOpenSSL`
- [ubuntu インストールスクリプトで `/opt/redash` が存在しない場合作成](https://github.com/getredash/redash/pull/2042) [@isomura](https://github.com/isomura)
- [ubuntu インストールスクリプトで `REDASH_BASE_PATH` 変数を使用](https://github.com/getredash/redash/pull/2046) [@sylvain](https://github.com/sylvain)
  - インストール先ディレクトリを変数化していたが、この値を参照せず、必ず `/opt/redash` になっていた

## 修正

- [クエリのフォークには対象のデータソースにフルアクセスの権限を必要にした](https://github.com/getredash/redash/pull/2070)
- [クエリ API キーが別のクエリの API キーとして使えた問題を修正](https://github.com/getredash/redash/pull/2069)
- [グループ削除時に、グループに所属していたユーザのグループ id が消えない問題を修正](https://github.com/getredash/redash/pull/2061) [@kyoshidajp](https://github.com/kyoshidajp)
- [Box plot の X 軸がソートされない問題を修正](https://github.com/getredash/redash/pull/2063) [@deecay](https://github.com/deecay)
- [配列を含む集計結果を Excel に正しくエクスポート出来ない問題を修正](https://github.com/getredash/redash/pull/2060) [@kyoshidajp](https://github.com/kyoshidajp)
  - 該当データ値として、エラーメッセージが出力されていた
- [クエリ編集画面で保存していないクエリでは Archive/Publish ボタンが表示されないようにした](https://github.com/getredash/redash/pull/2040) [@cyriac](https://github.com/cyriac)
- [docker-compose.production.yml 内の記述ミスを修正](https://github.com/getredash/redash/pull/2017) [@yutannihilation](https://github.com/yutannihilation)
- [MySQL で UTF8 スキーマをサポート](https://github.com/getredash/redash/pull/2006)
- [TreasureData で結果が0件の場合に実行が失敗する問題を修正](https://github.com/getredash/redash/pull/2005)
- [Boxplot の系列色を変更されない問題を修正](https://github.com/getredash/redash/pull/1993) [@deecay](https://github.com/deecay)
- [ユーザの権限削除時に、対象オブジェクトの権限がすべて削除される問題を修正](https://github.com/getredash/redash/pull/1998) [@meinac](https://github.com/meinac)
- [eslint の `"Cannot read property 'length' of undefined"` エラーを修正](https://github.com/getredash/redash/pull/1994) [@kravets-levko](https://github.com/kravets-levko)
  - 合わせていくつかのパッケージを最新にして、コードスタイルも修正
- [クエリ編集画面で波括弧（`{}`）を閉じていないとクラッシュする問題を修正](https://github.com/getredash/redash/pull/1988) 
- [チャートで値が0の時にエラーの値が表示されない問題を修正](https://github.com/getredash/redash/pull/1986)
- [Firefox から description 欄で Enter キーを押した際に改行が入る問題を修正](https://github.com/getredash/redash/pull/1965) [@alexmuller](https://github.com/alexmuller)
- [Queries#all_queries が時々間違ったクエリの数を返す問題を修正](https://github.com/getredash/redash/pull/1983)
- [API event で失敗する問題を修正](https://github.com/getredash/redash/pull/1978)
  - 合わせて、ユーザ名も保存
- Cancel button on tasks admin page was broken.
  - （どの PR か特定できず）
  - admin は `/admin` からアクセスするページ（イベントの内容などの情報が確認できるページ）と思われるが v4 で廃止されている（一部 `/admin/status` ページに移管）
- [非推奨になった `cx_Oracle` の型を削除](https://github.com/getredash/redash/pull/1899) [@queeno](https://github.com/queeno)
  - [`cx_Oracle`](https://oracle.github.io/python-cx_Oracle/) は Oracle DB に接続する Python ライブラリ
- [ダッシュボードのテキストボックスで保存していないの内容が更新される問題を修正](https://github.com/getredash/redash/pull/1896) [@alison985](https://github.com/alison985)
- [権限を与えたユーザにビジュアライゼーションとスケジュールの編集権限がない問題を修正](https://github.com/getredash/redash/pull/1944)
  - 権限付与は環境変数 `REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL` で指定できるもので、クエリまたはダッシュボードの編集権限を別ユーザに渡せる機能（デフォルトはオフ）
- [グラフのエラーバーの色が変更されない問題を修正](https://github.com/getredash/redash/pull/1921) [@deecay](https://github.com/deecay)
- Upgrade script was using the wrong restart command on new AMIs.
  - （どの PR か特定できず）