[Ruby on Rails]td-clientでTreasureDataにQueryを発行する
はじめに
前回に引き続き、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を発行する際の注意点となるかと思います。