こんにちは。グノシー開発部で部長をしている@cou_zです。最近はDJ RYOWのビートモクソモネェカラキキナ 2016 REMIXをよく聴いています。11/23のライブが楽しみですね。
Gunosyにおけるプロダクト改善は、データ可視化による現状把握から始まると考えています。Gunosyではデータ可視化にいくつかのツールを利用していますが、その中でも最近はRe:dashを用いることが多くなってきました。
先日、Re:dashを用いたリアルタイムKPI通知について紹介しました。 data.gunosy.io
今回は、Re:dashの新しい機能である Query Results (Alpha) Data Source を紹介します。 この機能により、複数Data Sourceのクエリ結果のJOINが可能になりました。アルバイトで分析を担当している松嶋も「ついに使えるようになったんですね!!redashが捗りそう」と期待の新機能です。
Re:dashのData Sourceとは
Re:dashを利用する基本的な流れは「接続先Data Sourceを登録 → クエリを書く → 結果をグラフで可視化 → グラフをダッシュボードに登録」となっています。 Data Sourceはクエリを書く接続先DBのことです。MySQLやBigQuery、Redshiftなどの他にも、Google SpreadsheetsやJSONを返すURLも指定することが出来ます。 下の図のようにたくさんのData Sourceに対応しています。
Query Results (Alpha) Data Sourceとは
モチベーション
Re:dashを使っていて、異なるData Sourceの結果をJOINして可視化したいということがあります。グノシーでの例としては、人気記事の可視化があります。Redshiftのログをサマって記事ごとの閲覧数を集計し、MySQLにある記事テーブルとJOINし、記事のタイトルやURLと閲覧数をまとめて可視化したい場合です。
グノシーでは、こういう場合はAWSのData Pipelineを利用して、ログの集計前にデイリーでMySQLからRedshiftにデータをコピーしています。AWSのマネジメントコンソールをポチポチするだけで、簡単にデータをコピーすることが出来るので便利ですが、アドホックにクエリを書いている時にわざわざデータのコピーをするのは面倒ですし、コピーするテーブルが増えると管理も煩雑になります。Big QueryなどのAWS以外のサービスを利用している場合は、Data Pipelineのみだとデータのコピーが出来ないので、更に面倒です。
そんな時、Re:dashのみで異なるData Sourceの結果をJOIN出来れば最高ですよね。 2週間ほど前に、Re:dashのファウンダーのArikさんとチャットしている中で、こんな機能が欲しいと伝えてみたら、
It's a planned feature, and I still need to do some research to understand how much effort is involved. If there is a minimal version I can push out this week, I'll do that. Otherwise it will take longer (we're in the middle of upgrading the hosted version to version 0.12).
と「今週リリースいけたらいく」と返信がきました。
待つこと数日。このチャットのことを忘れかけていた先週金曜日にArikさんからαバージョンがリリースされたとチャットが来ました…!
The support for running queries on top of query results is finally deployed.
使い方
使い方は非常に簡単です。Query Results (Alpha)というData Sourceを追加すると、FROM内で他のクエリの結果を query_<id>
で使用したクエリを書くことが出来るようになります。インメモリのSQLiteを使用しているため、 query_<id>
の結果が大きい場合は、メモリ不足で失敗することがあるとのことです。
使ってみた
さっそく使用してみます。まずはじめに、結果をJOINしたいクエリを2個用意しておきます。
1つ目は、Redshfitから記事閲覧ログをサマって、記事ごとの閲覧数を取得するクエリです。ここではクリック数上位5記事のみを取得することにしました。
2つ目は、MySQLから記事一覧を取得クエリです。ここでは直近3日間の記事のみを取得することにしました。
次に、これらのクエリの結果をJOINするために、Query Results (Alpha)というData Sourceの設定をします。Data SourceのNameは、そのままQuery Resultsにしました。
New Queryページにいくと、Data Sourceで追加したQuery Resultsが指定可能になっています。
クエリを書いて実行してみます。( query_1は前日の記事の閲覧ログをサマるクエリで、query_2は記事一覧を返すクエリです。)
query_1とquery_2の結果がJOINされました。クエリ実行時に、 query_<id>
で指定しているクエリも実行されるため、最新の結果を取得出来るみたいです。
最後に
Re:dashに追加されたQuery Results (Alpha) Data Sourceを使用して、クエリの結果をJOINする方法を紹介しました。データ可視化がまた簡単になりました。 Arikさんはいつもチャットの返信も新機能開発も速くてすごいです。