BQ の日付パーティションを月単位でフィルタしたい時
ts_column という TIMESTAMP 型のカラムでパーティショニングされたテーブルがあるとして、
WHERE FORMAT_TIMESTAMP('%Y-%m', ts_column, 'Asia/Tokyo') = '2023-05'
これだと全件読みに行っちゃうようだが、
WHERE TIMESTAMP_TRUNC(ts_column, MONTH,'Asia/Tokyo') = TIMESTAMP('2023-05-01', 'Asia/Tokyo')
これだとちゃんとパーティションが絞られるようだ。
最初、「えっw」って思ったけど、FORMAT_TIMESTAMP は任意の文字列を生成できるわけだから、そりゃパーティションフィルタ効かせるのは厳しいのかも。