はじめに
最近仕事でGCPのサービスの一つ、Google BigQueryを使用することとなった。 使用する、と入ってもひとまずクエリを作成して中身を確認するだけなのだがその中で初めて知る概念「パーティション列」について学んだのでその備忘録。
パーティション列とは?
本題の前にBigqueryの性質について少し説明をする。
BigQueryでは「パーティション分割テーブル」という概念(仕組み)がある。これはざっくりいうと、「スキャン範囲を局限するためにテープルを日時で分割する仕組み」といえる。
これには以下の2点のような種類があるようだ。
- 取り込み時間パーティション分割テーブル
- 日付/タイムスタンプパーティション分割テーブル
これらはそれぞれ、前者は取り込み時間を記録した専用の疑似列(自身が定義したテーブル定義とは無関係に自動的に作成されるテーブル定義のようなもの)、後者は特定のDate型の列を使用することでスキャンするデータをへらすことができるというものだ。
パーティション・プルーニング
これはデータウェアハウスのパフォーマンスを決定する重要な機能の一つで、クエリを分析して不要なパーティションを削除する機構のことを指す様子。上記の機能を総じていうとこのパーティションプルーニングといえるようだ。
終わりに
データウェアハウスに使用するようなサービスは用途上、そのパフォーマンスを向上させるためにRDBライクな機能に加えて特別な機能が多いようだ。 今回のBigQueryはスキャンした容量で料金が大きく変わるため、できるだけスキャン対象が少なくなるように気をつけたい。