Redash Meetup 3.0.0 で発表した「Hidden gems in Redash」の補足説明
先日のイベントで話した内容について、スライドを公開したものの、英語で書いてしまったせいで誤解を生んでしまうことがあったようなので、改めて日本語でも解説しておきます。
発表資料
タイトルについて
「Hidden gems in Redash」。Redash の中にある見つかりにくい機能を「Hidden gems」と例えたつもりだったのですが、ここからわかりにくかったなと反省しているところです。
Ruby の gem の話と混同してしまったかたも、もしかしたらいたのかもしれません。
Query Results Data Source
これについては、去年書いた記事があるので、そちらを見ていただくのが良いと思います。
上記の記事でもふれていますが、現時点でクエリパラメータを使ったクエリを使うことはできないという制約があり、それについては現在議論中です。
ReQL query language - Feature Requests - Redash Discourse
Python Data Source
Redash 3.0.0 以前から使用できるので、Redash を長く使っているかたには馴染みがある機能の一つでもあると思います。
スライド中で紹介した記事は以下です。
re:dash Python datasource join example · GitHub
国内での活用事例もいくつか見つかりますので、興味があれば探してみてください。
Url Data Source
このあたりから知られにくい機能の話になってきます。
Url データソースは HTTP エンドポイントをデータソースとして扱える機能です。
エンドポイントの仕様としては以下のようなものがあります。
上記の仕様を満たしていれば、ミドルウェアや言語に制約はないので、Web 開発に慣れているエンジニアが多いチームであれば導入を検討しやすい機能だと言えます。
発表中でも紹介しましたが、JX通信社さんでの事例が最近公開されていたので、この記事でUrl データソースを知った方もいらっしゃるかと思います。
Script Data Source
この機能はサーバー上に配置されているスクリプトや実行ファイルをデータソースとして扱える機能です。
スクリプトが標準出力に Redash 形式の JSON を出力することが満たされていれば、Url データソース同様にどんな言語で書くこともでき、発表時は Python と Bash で実装した例をご紹介しました。
ただし、この機能は任意のスクリプトを実行することができるという点で、導入を検討する際は、使用できるユーザーを制限するなどの権限管理などには注意しましょう。
Extending Redash
最後に紹介したのは、Redash のクエリランナーを自作するという話を紹介しました。
クエリランナーの挙動をある程度把握することができれば、独自のクエリランナーを作成し、Redash 上で動作させることができるようになっています。
クエリランナーの自作については、以前書いた記事があるので、そちらを参考にしてください。
また、発表の中で紹介した、Redash 開発者の Arik が後悔している記事もあわせて紹介しておきます。
Creating a new query runner (data source) in Redash - Development - Redash Discourse
外部 API を使用する、CSV や Excel のファイルを S3 や Google ドライブから取得して表示するなど、クエリランナーを自作できると、Redash 活用の幅を広げることができると思います。
発表のまとめ
Redash を高度に活用するためのいくつかの機能を紹介しました。
Redash は 多くのデータソースに対応しながらも、Url データソースやクエリランナーの自作など、開発者が拡張できる余地があります。
ただし、無理にこれらの機能を使おうとしなくても、よく使われる既存のデータソース(MySQL や PostgreSQL, BigQuery など)だけでほとんどの問題を解決できるはずです。
あくまで、既存のデータソースでは解決できない問題に出会った場合に利用を検討する程度に、今回の発表の内容を捉えていただくと良いと思います。
With great power comes great responsibility
この記事のまとめ
当日お話した内容を思い返しつつ、解説記事を書いてみました。
正直、無理に英語で書くこともなかったかなとは思うものの、英語で書こうとすると回りくどい言い回しができなくなるため、メッセージがシンプルにできるのかなという感想を抱きました。
英語で書いた理由は、単にチャレンジしたかったというものの他に、海外の Redash ユーザーにも読んでもらえたらいいなと思ったというのがあります。
実際読んでもらえているかはわかりませんが、それはスライドの View 数や Star 数でも見ながら想像してみようと思います。