Treasure Dataからデータをrubyで取得する


Treasure Dataからrubyで結果を取得する。

gemをインストール

Gemfile
gem 'td-client'
gem 'multimap'

インストール

bundle install

rakeを作成

config/initializers/td_select.rb
# -*- coding: utf-8 -*-
require 'td-client'
require 'multimap'
namespace :td do 
  desc ''
  task :sample => :environment  do
    p "start"

    # This is a script that
    # get the difference from TreasureData by timestamp
    apikey = ENV['TREASURE_DATA_API_KEY']
    db     = "db_name"
    table  = "pageview"
    query  = "SELECT v['session_id'],v['path_info'] FROM #{table} order by time desc limit 100"
    cln = TreasureData::Client.new(apikey)
    job = cln.query(db, query)

    until job.finished?
        sleep 2
        job.update_status!
    end

    job.update_status!  # get latest info

    multimap = Multimap.new
    if job.success? && job.finished?
        logs = []
        job.result_each do |row|
            session_id = row[0]
            path_info = row[1]
            multimap[session_id] = path_info
        end
    end
    pp multimap.keys
  end

end

rake task を実行

bundle exec rake td:sample