BigQueryで時間単位の集計を行う方法

時間単位での計算をする場合、MySQLではHOURを使っていたが、BigQueryではそれではできず、下記の2種類の方法で行う。

EXTRACTを使う場合

この方法だと時間の数値部分だけを得られる(例えば2019-07-04 12:13:14だと、12が得られる。)

SELECT
EXTRACT(HOUR FROM datetime) AS hour,
COUNT(*)
FROM example.hoge
GROUP BY hour

TIMESTAMP_TRUNCを使う場合

これはEXTRACTと違ってDATETIME全体を得ることができます。(例えば2019-07-04 12:13:14だと、2019-07-04 12:00:00が得られる。)

SELECT
TIMESTAMP_TRUNC(datetime, HOUR) AS hour,
COUNT(*)
FROM example.hoge
GROUP BY hour

おわり

EXTRACTの場合は純粋な時間だけなので、日をまたぐ場合は混ざってしまいますが、TIMESTAMP_TRUNCを使えば年月日を意識することなく直で日を跨いだ処理ができるのがポイントです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA