LoginSignup
8
6

More than 5 years have passed since last update.

TreasureDataでHiveクエリを書くとき - TD_SCHEDULED_TIMEを利用しよう

Posted at

はじめに

Treasure DataはHiveの関数以外に独自関数を。。。(略

ドキュメント:Supported Hive UDFs

ドキュメントを見れば、ここから下は不要だ。

TD_SCHEDULED_TIME

これはクエリ実行時の現在時刻のunixtimeを返す関数です。スケジュールクエリ実行時に使います。

ちなみにHiveにはunix_timestamp()という実行時のunixtimeを返してくれる関数があります。
だがしかし、unix_timestamp()は本当の現在時刻を返してしまいます!!

スケジュールしているのが09:00:00だったとしても、実際にクエリが流れるのは09:00:30だったりしますよね。同じ時間にたくさんのスケジュールクエリを設定していたり、重いJOBを実行していたりすると時間ずれます。また、スケジュールクエリにはDelayオプションという実際の実行開始時間をずらすオプションもあります。

そんなわけで、TD_SCHEDULED_TIME()はスケジュールされた正確な時間を返します。もし、スケジュールされていないクエリを実行した場合は実際の時間を返します。もちろんDelayオプションで開始時間をずらしてもスケジュールされている時間です。

まとめ

昨日との差分を計算したい。とかいうときは毎日同じ時間を条件に指定したいですよね。
そんなときはTD_SCHEDULED_TIME()を使いましょう!

8
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6