こんにちは、Y.Nです。
弊社で昨年導入したトレジャーデータ、社内でみんな使っている状況になりました。
そこでよく見る間違い・・・。
TD_TIME_RANGEの第三引数の扱いが間違っているのが多いので指摘しておこうと思います。
たとえば、2017年3月30日のログを集計しようとしたとき、
SELECT count(1) FROM logs WHERE TD_TIME_RANGE(time, ‘2017-03-30 00:00:00 JST’, ‘2017-03-30 23:59:59 JST‘)
こんなSQLを書いちゃう人がいますが、これだと、
2017-03-30 23:59:59
この秒は含ませません。
公式のドキュメントを見ると・・・。
https://docs.treasuredata.com/articles/udfs#tdtimerange
start_time <= time && time < end_time
とんな数式が載っていまして、end_time の前は「<」となっておりend_timeそのものは含まれません。
このおかげでSQLの時刻はもっと直感的に記載できるようになっています。
SELECT count(1) FROM logs WHERE TD_TIME_RANGE(time, ‘2017-03-30 JST’, ‘2017-03-31 JST’)
あとは時刻を記述するときに時間の記述の中に「JST」を記述することをお忘れなく。
TD_TIME_PARSEを使ってJSTに合わせるということをしていましたが、JSTとつけるだけでしっかりと日本時間に合わせてくれます。
あとはTD_TIME_PARSEもJSTも付け忘れてUTCになって計算結果を出してしまう方も多いのでこのあたりもお忘れなく!
以上、トレジャーデータを使うときに気を付ける点でした。
よろしくお願いいたします。