BQで時間情報を分刻みにカットしてユニークにする



時間情報がたくさんある状態で、どれくらいのデータが分単位で存在しているのか、欠損してるのか、みたいな情報を調査しようと思った時に雑に作ったSQL

with rawdata as (SELECT userid, TIMESTAMP_TRUNC(datetime(time, 'Asia/Tokyo') ,MINUTE) as view_time
FROM
    `data_log`
)
select userid , view_time
from rawdata
group by userid, view_time
order by userid, view_time
userid単位にデータを一旦分でtruncして、これをgroupbyしてる。
一応countをとれば、「その分にどれくらいアクセスがあったのか」もわかる。

1分刻みだったらtruncにすればいいけど、5分刻みみたいにしたい場合はこちらを参照。
BigQueryでTIMESTAMPを5分単位で丸める