Redash Meetup 3.0.0 で発表した「Hidden gems in Redash」の補足説明

先日のイベントで話した内容について、スライドを公開したものの、英語で書いてしまったせいで誤解を生んでしまうことがあったようなので、改めて日本語でも解説しておきます。

発表資料

speakerdeck.com

タイトルについて

「Hidden gems in Redash」。Redash の中にある見つかりにくい機能を「Hidden gems」と例えたつもりだったのですが、ここからわかりにくかったなと反省しているところです。

Ruby の gem の話と混同してしまったかたも、もしかしたらいたのかもしれません。

Query Results Data Source

これについては、去年書いた記事があるので、そちらを見ていただくのが良いと思います。

ariarijp.hatenablog.com

上記の記事でもふれていますが、現時点でクエリパラメータを使ったクエリを使うことはできないという制約があり、それについては現在議論中です。

Thoughts on adding support for queries with parameters in query results data source - Development - Redash Discourse

ReQL query language - Feature Requests - Redash Discourse

Python Data Source

Redash 3.0.0 以前から使用できるので、Redash を長く使っているかたには馴染みがある機能の一つでもあると思います。

スライド中で紹介した記事は以下です。

Redash Python functions

re:dash Python datasource join example · GitHub

国内での活用事例もいくつか見つかりますので、興味があれば探してみてください。

Url Data Source

このあたりから知られにくい機能の話になってきます。

Url データソースは HTTP エンドポイントをデータソースとして扱える機能です。

エンドポイントの仕様としては以下のようなものがあります。

  • 結果を Redash 形式の JSONで返す
  • 対応する HTTP メソッドは GET のみ
  • リクエストボディは送信できない

上記の仕様を満たしていれば、ミドルウェアや言語に制約はないので、Web 開発に慣れているエンジニアが多いチームであれば導入を検討しやすい機能だと言えます。

発表中でも紹介しましたが、JX通信社さんでの事例が最近公開されていたので、この記事でUrl データソースを知った方もいらっしゃるかと思います。

tech.jxpress.net

Script Data Source

この機能はサーバー上に配置されているスクリプトや実行ファイルをデータソースとして扱える機能です。

スクリプトが標準出力に Redash 形式の JSON を出力することが満たされていれば、Url データソース同様にどんな言語で書くこともでき、発表時は PythonBash で実装した例をご紹介しました。

ただし、この機能は任意のスクリプトを実行することができるという点で、導入を検討する際は、使用できるユーザーを制限するなどの権限管理などには注意しましょう。

Extending Redash

最後に紹介したのは、Redash のクエリランナーを自作するという話を紹介しました。

クエリランナーの挙動をある程度把握することができれば、独自のクエリランナーを作成し、Redash 上で動作させることができるようになっています。

クエリランナーの自作については、以前書いた記事があるので、そちらを参考にしてください。

ariarijp.hatenablog.com

また、発表の中で紹介した、Redash 開発者の Arik が後悔している記事もあわせて紹介しておきます。

Creating a new query runner (data source) in Redash - Development - Redash Discourse

外部 API を使用する、CSVExcel のファイルを S3 や Google ドライブから取得して表示するなど、クエリランナーを自作できると、Redash 活用の幅を広げることができると思います。

発表のまとめ

Redash を高度に活用するためのいくつかの機能を紹介しました。

Redash は 多くのデータソースに対応しながらも、Url データソースやクエリランナーの自作など、開発者が拡張できる余地があります。

ただし、無理にこれらの機能を使おうとしなくても、よく使われる既存のデータソース(MySQLPostgreSQL, BigQuery など)だけでほとんどの問題を解決できるはずです。

あくまで、既存のデータソースでは解決できない問題に出会った場合に利用を検討する程度に、今回の発表の内容を捉えていただくと良いと思います。

With great power comes great responsibility

この記事のまとめ

当日お話した内容を思い返しつつ、解説記事を書いてみました。

正直、無理に英語で書くこともなかったかなとは思うものの、英語で書こうとすると回りくどい言い回しができなくなるため、メッセージがシンプルにできるのかなという感想を抱きました。

英語で書いた理由は、単にチャレンジしたかったというものの他に、海外の Redash ユーザーにも読んでもらえたらいいなと思ったというのがあります。

実際読んでもらえているかはわかりませんが、それはスライドの View 数や Star 数でも見ながら想像してみようと思います。