↓の記事にBigQueryの予定している新機能などが書いてあったので個人的に気になったのを紹介
cloud.google.com
テーブルの自動パーティショニング
まだアルファ版らしいけど、テーブルの自動パーティショニングが使えるようになるらしい
BigQueryではクエリの度にテーブルがすべてスキャンされてしまうので、1日ごとなどの適切な粒度でテーブルを分ける必要があった
1つのテーブルに全部の日付分のデータをいれたような巨大なテーブルに何度もクエリを投げると、そのテーブルの大きさに応じて料金が請求されるので下記の記事のようなことになってしまう
たとえば[test.data_20160301], [test.data_20160302]のように日付ごとにテーブルを作ると、TABLE_DATE_RANGE関数を使って以下のようにアクセスできる
SELECT * FROM TABLE_DATE_RANGE([test.data_], TIMESTAMP('20160301'), TIMESTAMP('20160307'))
公開が予定されている自動パーティショニングはこのような日付ごとのテーブルの分割を自動でやってくれるようになるもの
[test.data]というテーブルで自動パーティショニングを有効にしていれば、以下のような感じで日付を指定してアクセスできるようになるらしい
SELECT * FROM [test.data] WHERE _PARTITION_LOAD_TIME BETWEEN TIMESTAMP('20160301') AND TIMESTAMP('20160307')
SELECT * FROM [test.data$20160301]
データを保存するときに日付ごとに分けずに巨大なテーブルになって大きな課金をされてしまう罠が防げそうでよいけど、障害などで後からログの入れなおしをしたりすることもあるので今までどおり日付ごとにテーブルを作っておいたほうが扱いやすいかも(パーティションを破棄できるようにもなると嬉しいけど
その他
他にもいくつか書いてあるけど気になったのは以下のもの
追記(2016-07-17)
パーティション機能の挙動について調べました
sucrose.hatenablog.com