BigQueryの管理コンソールでDATETIME型の検索結果のミリ秒以下が省略される表示について調べた
データアナリティクス事業本部の鈴木です。
BigQueryの管理コンソールでDATETIME型のデータを見ていたときにふとミリ秒以下が表示されないデータがあることに気づき、どのような表示の挙動になっていそうか確認してみました。
結果的には、ミリ秒以下が全て0の場合は、表示が省略されることが分かりました。些細なことではありますが、ミリ秒が記載されていない日時の文字列からDATETIME型にキャストしたときに、「これって表示されなくていいんだっけ?」とかなり気になったので、確認したことをブログにしました。
BigQueryのDATETIME型について
以下のドキュメントにDATETIME型の記載があります。
記事執筆時点では、0001-01-01 00:00:00~9999-12-31 23:59:59.999999
の範囲でデータを持てることが記載されており、型の仕様としてミリ秒以下の値をあらわに表示しないことがあることが分かりました。
ミリ秒以下がどんなときに表示されないのか試してみた
実際にコンソールから試してみました。
ミリ秒以下が省略されるとき
ミリ秒以下が000000
と同等のときは表示が省略されるようでした。
SELECT CAST('2023-03-19 13:00:00'AS DATETIME)
SELECT CAST('2023-03-19 13:00:00.000'AS DATETIME)
SELECT CAST('2023-03-19 13:00:00.000000'AS DATETIME)
ミリ秒以下が省略されないとき
ミリ秒以下が000000
以外のときは表示が省略されませんでした。
SELECT CAST('2023-03-19 13:00:00.001'AS DATETIME)
SELECT CAST('2023-03-19 13:00:00.000001'AS DATETIME)
という訳で、ミリ秒以下に0以外の値が入るような場合は、コンソール上では表示が省略されることが分かりました。
bqツールから検索したときの挙動
bqツールの検索結果だとミリ秒以下は表示されるかなと思い確認してみましたが、こちらも省略されました。
bq query --use_legacy_sql=false "SELECT CAST('2023-03-19 13:00:00.000000'AS DATETIME)"
設定で変更できないか
クエリエディタの設定やbqツールのオプションで変更できないかと思いましたが、記事執筆時点ではDATETIME型のデータの表示設定のような機能はなさそうでした。今後追加されたり、もしここからできるよというものがあればコメント頂けると幸いです。
コンソールからの操作の仕様については以下のドキュメントが一番詳しそうでした。
bqツールのリファレンスは以下になります。
最後に
今回は、BigQueryのコンソールでDATETIME型のデータのミリ秒以下の表示について、どのようなときに表示が省略されるのか確認してみました。
初めてみたときになにかデータの格納方法を間違えてミリ秒以下が落ちてしまったり、型を間違えたかなと結構びっくりしたのですが、ただ単に表示が省略されていることが分かったので安心しました。
どこかで誰かのお役に立てば嬉しいです。