こんにちは、SSTDの大村です。セミナーも終わりゆっくりしていたいところですが、新しいお客様にもめぐり合え、忙しい日々をすごしています。うれしいかぎりです。これからもさまざまなお客様と出会えるように精進していきます。
今回はTresureDataを利用するプログラムを書いてみようと思います。Treasure Dataの基本機能でできないことも、プログラムから操作すれば思うがまま、自由自在ですね。操作自体はとっても簡単なので、あとは他のアプリケーションなどと接続するプログラミングをすればよいだけなのです。今回はRubyからの操作を見てみましょう。
まずはじめにTreasure Dataにデータを入力するRubyプログラムを書きます。今回利用するRubyはTreasure Data Toolbeltをインストールしたときに一緒に入っているRubyを利用します。これでバージョン互換などを気にすることなくTreasure Dataを利用することができます。
前準備
- Treasure Data Toolbeltをインストール
- apikeyを取得
$ td apikey:show
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 取得したapikeyを環境変数TD_API_KEYに登録(登録しない場合はapikeyをプログラム内に直に書いてください)
データ入力用のプログラムの作成
データ入力用のプログラムを作成します。忘れずにRuby用のtdライブラリをロードします。
td.testdbのtestdbがTreasure Dataのデータベース名、TD.event.postの後ろにデータを追加するテーブル名を指定します。
このプログラムはtd-agentを利用しているので、td-agent.confを記述し、td-agentを作動させている必要があります。まず下のようにtd-agent.confを設定します。
データの流れはプログラムからlocalのポート24224にデータが送信され、その後、td-agentの機能でTreasure Dataにデータが送信されるので、sourceタグの記述を省略することはできませんので注意してください。
td-agentを再起動します。
$ sudo /etc/init.d/td-agent restart
Shutting down td-agent: [ OK ] Starting td-agent: [ OK ]
実行します。
$ ./td_input.rb
確認してみましょう。
$ td tables
+———-+—————–+——+———–+———+——————+——–+
| Database | Table | Type | Count | Size | Last import | Schema|
+———-+—————–+——+———–+———+——————+——–+
| testdb | input_test_tbl | log | 1 | 0.0 GB | 2013-05-22 17:53:02 +0900 ||
| testdb | www_access | log | 5,000 | 0.0 GB | 2013-05-14 10:34:04 +0900 ||
+———-+—————–+——+———–+———+——————+——-+
2 rows in set
新しいテーブルが作成され、データが1件入力されているのが確認できました。
データ取得用のプログラム作成
最後にデータをTreasure Dataから取得するプログラムを作成します。今度はtd-clientライブラリをロードします。
クエリを投げて、先ほど入力したデータを取得し、画面に表示するだけのプログラムです。
実行します。
$ ./td_output.rb
[{“opt1″=>”AAA”, “opt2″=>”BBB”, “time”=>”1369212760”}, 1369212760]
先ほど入力したデータを出力することができました。
コード中に下記の記述するとjobidを確認することができます。これを利用してブラウザのコンソール画面からjobの詳細を確認することもできます。
job.job_id
ライブラリのインストールなども行わずにapikeyを利用するだけで簡単にTreasure Dataにアクセスすることができました。Treasure Dataの利用の幅が広がりますね。他にも標準ライブラリが用意されている言語がありますので、今後紹介いたします。
執筆:大村@SSTD