BQでonテーブルをいい感じに指定する_TABLE_SUFFIX




BQだとonのテーブルをちゃんと指定すると実行速度=料金がよくなります。
ということで、過去2ヶ月分のテーブルのみを指定するみたいな感じをやりたかったんですが、そこを自動で取りたかった。

SELECT t1.id
, max(case when t2.id is not null then 1 else 0 end) as is_2months_msg
FROM `table` t1
left outer join `table_data_on_*` t2 on (t1.id = t2.dat_id)
WHERE t2._TABLE_SUFFIX >= FORMAT_DATE("%Y%m01", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 2 MONTH))
group by t1.id

table_data_on_202105 みたいなパターン
正確には過去2ヶ月を綺麗に取るのが目的ではなく、速度や料金をマシにするので、これだと若干多く取ります。なので取ったあとのwhenとかでちゃんとやってあげるのが正しいかもしれません。