Treasure Dataのデータを利用するプログラム(Ruby編)

こんにちは、SSTDの大村です。セミナーも終わりゆっくりしていたいところですが、新しいお客様にもめぐり合え、忙しい日々をすごしています。うれしいかぎりです。これからもさまざまなお客様と出会えるように精進していきます。

写真は会社の近くの東京タワーです。ライトアップされた東京タワーを近くで見ると心がやすらぎますが、7月に社屋移転予定なので、東京タワーがちょっと遠くなると思うと残念です。

今回はTresureDataを利用するプログラムを書いてみようと思います。Treasure Dataの基本機能でできないことも、プログラムから操作すれば思うがまま、自由自在ですね。操作自体はとっても簡単なので、あとは他のアプリケーションなどと接続するプログラミングをすればよいだけなのです。今回はRubyからの操作を見てみましょう。

まずはじめにTreasure Dataにデータを入力するRubyプログラムを書きます。今回利用するRubyはTreasure Data Toolbeltをインストールしたときに一緒に入っているRubyを利用します。これでバージョン互換などを気にすることなくTreasure Dataを利用することができます。

前準備

  1. Treasure Data Toolbeltインストール
  2. apikeyを取得
    $ td apikey:show
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3. 取得した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