3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【BigQuery】スケジュールクエリ用パラメータ@run_dateを日本標準時(JST)で利用する

Last updated at Posted at 2022-10-24

BigQueryの『スケジュールされたクエリ』(以降、スケジュールクエリ)という機能を使うと、プログラムを書かなくてもクエリを定期的に実行し、テーブルを更新することができます。

そのスケジュールクエリに設定したクエリ内で使える専用のパラメータに @run_date というDATE型のパラメータがあり、where dt = date_add(@run_date,interval -1 day) のような形で多用していました。

しかし、@run_date はUTC(世界標準時)の日付がデフォルトであり、日本時間で9:00AMより前にスケジュールを設定すると、@run_dateが前日になってしまうという問題がありました。

この@run_dateを日本の日付に直さなければならない場面に直面し、なんとなく答えが出たので書いておきます。

@run_dateというパラメータに関するGoogleの公式ドキュメントはこちら。

@run_dateをJSTに変換するのは不可能

@run_dateというパラメータはDATE型なのですが、そもそもDATE型(日付型)のデータ型にタイムゾーンの概念はありません。なので、UTCの日付が入っていても、それをJSTに変換することは不可能なのです。

であれば、タイムゾーンを持つTIMESTAMP型のパラメータを用いて、それをDATE関数でJSTに変換しながらDATE型にすると@run_dateをJSTに直すのと同じことになります。

そして、BigQueryにはスケジュールクエリで使える @run_timeというTIMESTAMP型のパラメータが存在します。

なので、

DATE(@run_time,'Asia/Tokyo')

とすれば良さそうです。

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?