【BigQuery】TIMESTAMP()orFORMAT_TIMESTAMP()でUTCからJSTへの変換
背景
BigQueryについて
インタラクティブ クエリの実行する時、ConsoleでBigQueryウェブUIを使用し、構文エラーなどをその場ですぐ検知されるのはメリットの一つである。
発生された問題
BigQueryでJST形式のTIMESTAMP型のカラムにデータが格納されており、それらのデータを関数計算して、別のテーブルカラムとして作成すると、デフォルトでUTC形式に変換されて新しいテーブルに挿入されてしまう場合。
FORMAT_TIMESTAMP( )を用いて、BigQueryウェブUIに叩いたら、構文エラーはなかったが、クリエ結果は無効のvalueが返された。
以下のようにクエリしようとしてました。
実行してみると、このようになってます。
目標
元テーブルのデータをJSTに変換し、最新の日付データ(最大値)を比較してDATEとして抽出すること。
FORMAT_TIMESTAMP( )
説明
資料リスト
1. 標準SQL関数と演算子
2. FORMAT_TIMESTAMP( )
タイムスタンプを指定された format_string に従ってフォーマットします。
FORMAT_TIMESTAMP(format_string, timestamp[, time_zone])
戻りデータの型
STRING
ここまで、調べてきたら、エラーの原因は明らかになったようですね。
MAX(STRING)
としてしまったのか?!まさか!!!
それでは、string_expressionからtimestamp_expressionへ変換しましょう。
TIMESTAMP( )
説明
資料リスト
1. 標準SQL関数と演算子
2. TIMESTAMP( )
TIMESTAMP(
string_expression[, timezone] |
date_expression[, timezone] |
datetime_expression[, timezone]
)
なるほど、TIMESTAMP( )を使えばと良さそうですね。
早速、BigQueryウェブUIに叩いてみましょう。
エラーだった2020-01-29 00:00:00 UTC+9
はうまくJSTに変換されて、DATE型の2020-01-28
として抽出されました。
まとめの一言
複数の関数、演算子を組み合わせてクエリする時や型変換を頻繁に行われる時など、頭が混乱になってしまうのが自分には普通?日常的?なことで、一個一個の関数を整理するかまた誰かに確認していただくかはそのようなミスを抑えられる解決法ではないでしょうか。
Author And Source
この問題について(【BigQuery】TIMESTAMP()orFORMAT_TIMESTAMP()でUTCからJSTへの変換), 我々は、より多くの情報をここで見つけました https://qiita.com/itz_yuan/items/8c5d416c045cca73daa5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .