この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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の記述方法については、下記の参考サイトを参照してください。