BigQuery には Table wildcard functions という関数があって、テーブルを日次、月次とかに分割している場合に重宝します。
例えば、
TABLE_DATE_RANGE(mydata.people,
TIMESTAMP('2014-03-25'),
TIMESTAMP('2014-03-27'))
こう書くと、
- mydata.people20140325
- mydata.people20140326
- mydata.people20140327
というテーブルが一気に取得できます。
しかし、これ日次でテーブルを分割している場合にしか使えなくて、そこまで行数が多くない場合、月次で分割しているテーブルがあって、その今月分のデータだけを引っ張ってきたい、という場合に使えないのです。
ということで、擬似的に TABLE_MONTH_RANGE
的なことができないか試しいたところ、以下の方法で取得することができました。
TABLE_QUERY(mydata,
'REGEXP_MATCH(table_id, r"^people") AND
table_id CONTAINS STRFTIME_UTC_USEC(NOW(), "%Y%m")'))
2015年1月だったら mydata.people201501
というテーブル名にヒットします。
これでクエリを毎月書き換える作業から解放されます。
普通に Ruby とか Go のクライアントで動的にクエリを生成している場合は必要ないんですが、GAS から Spreadsheet に書いたクエリを実行する的なことをやる場合に便利です。
拙作ですが、GAS から BQ を呼んで定期レポートを作成するみたいなの例:
https://speakerdeck.com/hakobera/hazimetefalse-bq-gas