Treasure Data を使う時にとりあえず読んでおくと良いドキュメント


データインポート

  1. Streaming Import
  2. App Mobile SDK
  3. Bulk Import

の3種類ある。

Webアプリだと1,3の2つでログ的なものは1, DBにストアしているものは3の方法で入れれば、大抵の場合は良さそう。

スキーマ定義

TDは基本的にはログをJSON形式で送るだけなので、予めテーブルを作ったり、スキーマを決めておく必要はない。

ただ、データを送信した後に、解析する際、各フィールドをv['user_id']と言った形でアクセスせずに、user_idでアクセスできるようにするために、以下のようにスキーマを定義すると良い。このスキーマを作ることで、デフォルトの型が指定される。また、定義は後で変更することが出来る。

事例集

Hive Query の例が色々載っていて参考になる。
ただし、たまに間違いがあるので注意w

TreasureData UDF

UDFを使うとセッションでの最初のアクセス元を求める等、普通のSQLでは書くことが難しいクエリが簡単にかけたりする。

パフォーマンスチューニング

  • TD_TIME_RANGE と TD_TIME_FORMAT は一緒に使ってはいけない
  • v['hoge']を使わずにカスタムスキーマを使う
  • SELECT COUNT(DISTINCT(field)) を使ってはいけない
    • SELECT COUNT(1) FROM ( SELECT DISTINCT field FROM tbl ) t と書く
  • ORDER BY より SORT BY を使う (違いについて)
  • GROUP BY はより分散できるものを先に置く
    • good: SELECT GROUP BY uid, gender
    • bad: SELECT GROUP BY gender, uid