TreasureDataで前月とか前々月とか指定したい


追記 ※以下のやり方はtime indexが使えないので結果的に無意味でした\(^o^)/

詳しいことは中の人のコメント参照で

TD_TIME_ADDはmonthで指定できない

http://docs.treasuredata.com/articles/udfs#tdtimeadd
どうやら月は28日だったり31日だったりと固定じゃないためできないらしい。
この問題は結構前から言われてますが、特にその後変化があるわけでもないようです。

代替案

TDがダメならHiveの関数を使えばいいじゃない、ということで
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
add_months()を使ってみる

うーん、パフォーマンスは上がりませんが、現状取り得る手法としては悪くないと思います。

SELECT
add_months(from_unixtime(time), -3) --前前前月

使うとしたらこんな感じでしょうか?

WHERE
TD_TIME_RANGE(time,add_months('2018-02-01', -3),NULL,'JST')