[Ruby on Rails]td-clientでQueryの出力先にTD上のテーブルを指定する
はじめに
Treasure DataではQueryの出力先としてTreasure Data上のテーブルを指定することができます。今回は、これをRubyにて行ってみました。
実業務を想定すると、一回のQueryではロジックやパフォーマンスなどが厳しい場合、複数回のQueryに分けて実行し、各Queryの結果をワークテーブルに書き込む場合などを想定しています。
サンプルソース
1.事前準備
以前の記事で書いたとおり、Gemfileに必要なものを記述して、td-clientをインストールします。
2.Queryの発行
Queryの発行についても、以前の記事とほぼ同じです。今回は「result_url」にて出力先のテーブルを指定します。
class Sample TD_API_KEY = 'your api key' def self.index cln = TreasureData::Client.new(TD_API_KEY, {ssl: true}) job = cln.query('sample_db', 'SELECT zipcode, time FROM prefectures where zipcode = 600031', result_url='td://@/sample_db/prefectures_result') until job.finished? sleep 2 job.update_progress! end job.update_status! end end
上でも書いたように、6行目のquery発行時に「result_url」を指定しています。result_urlの書式は「td://@/データベース名/出力先テーブル名」です。ここ以外は、通常のQuery発行と変わりはありません。
まとめ
分かってしまえば簡単なのですが、result_urlの書式が分かるまでに意外と苦労しました。「url」という名前なので「http://~」なのかを思ってみたり・・・。
これを使い、ワークテーブルを使ったjobフローをRubyにて記述できそうです。
今回は試していないのですが、TD上のテーブル以外にも、AWS S3やFTPサーバなどへも直接出力できるようです。指定できる出力先とresult_urlの記述方法については、下記の参考サイトを参照してください。