BigQueryのパーティションについて調べてみた


はじめに

BigQueryを使うにあたって、クエリー料金を安く抑えるのに重要と思われる
パーティション分割について調べたときのメモ

パーティション分割とは?

  • テーブルをパーティションキーに指定した値でパーティションとして分割することができる
  • パーティションをクエリーの条件に指定することでスキャン量をへらすことができる★
  • テーブルを作るときに「パーティションとクラスタ」の設定でパーティション分割に利用する列を指定できる
  • 列の型にあわせて、パーティションタイプを選べる
  • パーティション列にDATETIMEを指定した場合は、「1日毎」「1時間ごと」「月別」「年別」を選択することができる

パーティションの一覧を確認するには?

select * from プロジェクト名.データセット名.INFORMATION_SCHEMA.PARTITIONS

クエリー設定をレガシーSQLに変更する必要があるが次の方法でも可能

select * from [ プロジェクト名.データセット名.対象テーブル名$__PARTITIONS_SUMMARY__]

パーティションを削除するには?

手動での削除

下記のように書いてあるが、DROP VIEW DROP TABLE などは見つかるものの DROP PARTITION という構文は見つからなかった。

テーブルの削除、ビューの削除、個々のテーブル パーティションの削除、ユーザー定義関数の削除は無料です。
料金  |  BigQuery: クラウド データ ウェアハウス  |  Google Cloud

有効期限による削除

パーティションキーをもとにテーブルにパーティションの有効期限を設定することで、
期限切れのパーティションを自動で削除してくれる。
日時をもとにしたパーティションであれば、テーブルのデータを一定期間に保つことができる

まとめ

BigQueryのパーティションの使い方についてメモでした。