😇
BigQueryでPARSE_DATEを使った時に「クエリ結果を格納する一時テーブルの期限が切れました」と表示される時の対処
発生するケース
SELECT PARSE_DATE("%Y-%m-%d", "20220101")
もしくは
SELECT PARSE_DATE("%Y%m%d", "2022-01-01")
などで発生します。
原因
PARSE_DATEでは第二引数の日付の文字列を、第一引数のフォーマット文字列に従って、DATEオブジェクトにパースします。
画像にも表示されていますが、日付文字列とフォーマット文字列が一致しておらず、パースに失敗しているのが原因です。
なので、以下のようにフォーマットと日付文字列を一致させれば、問題なくパースできます。
SELECT PARSE_DATE("%Y-%m-%d", "2022-01-01")
SELECT PARSE_DATE("%Y/%m/%d", "2022/01/01")
SELECT PARSE_DATE("%Y%m%d", "20220101")
SELECT PARSE_DATE("%d/%m/%Y", "01/02/2022")
さいごに
普段よく使うRailsのパース系のメソッドは日付の文字列を渡すだけでいい感じにパースしてくれていたので、あまり仕様を意識せずにPARSE_DATEを使っていたら、意外とハマりました。
ただ今回の調査でBigQueryのPARSE_DATEについて理解を深められたので良かったです。
皆さんも良きBigQueryライフをお過ごしください。
Discussion