この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
前回に引き続き、Ruby on RailsとTreasureDataについてです。今回はTreasureDataにQueryを発行してみました。とはいっても、非常に簡単です。
サンプルソース
サンプルです。手順としては、
- Gemfileにて必要なgemをインストール
- TreasureData::Clientのquery()メソッドにてQueryを定義
- jobの終了を待機
となります。
1.Gemfile
前回と同じですが、以下をGemfileに記述し、$ bundle install します。
gem 'td'
gem 'td-client'
gem 'msgpack'
2.Queryの発行
Queryの発行についてです。発行というよりは、QueryをjobとしてTreasureDataに登録し、処理が終了するのを待機して結果を受け取る、という感じとなります。
require 'csv'
require 'zlib'
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')
until job.finished?
sleep 2
job.update_progress!
end
job.update_status!
puts job.result.to_json
true
end
end
5行目のキーは、前回と同じです。8行目でTreasureData::Clientのインスタンスを作成していますが、今回はオプションでSSLを使うよう指定しています。そして9行目でQueryを定義しています。このquery()メソッドの構文は以下の通りです。
query(データベース名, 処理するQuery)
11~16行目でjobの終了の待機、スタータスの更新を行い、17行目で取得結果をjson形式で出力しています。
まとめ
jobを意識する必要があることが、TreasureDataにQueryを発行する際の注意点となるかと思います。