BigQueryのpartitioned-tables(分割テーブル)について

はじめに

BigQueryは従量課金のモデルのため、スキャン量に応じて課金される。

いかにスキャン対象を減らすかが非常に重要になる。

通常のwhereで絞ったとしても、スキャンはされてしまうため課金を回避することができない。

そこで、partitioned-tables(分割テーブル)である。

partitioned-tables(分割テーブル)について

現時点で大きく2つ存在している

  • 取り込み時間分割テーブル:
    データを取り込んだ(読み込んだ)日付またはデータが着信した日付に基づいて分割されたテーブル。
  • 分割テーブルTIMESTAMP 列または DATE 列を基準にして分割されたテーブル

詳細はこちら

https://cloud.google.com/bigquery/docs/creating-partitioned-tables

通常のwhereのように使い、課金額を減らすのが目的であれ”取り込み時間分割テーブル”ではなく”分割テーブル”のが便利そうだ

やってみた

テーブル定義

まずはテーブル定義

テーブルを作成する

lesson_dateが分割テーブルのパーティションとなる

読み込み

データはこんな感じ

読み込ませる

使ってみる

少数のデータなので記事としては微妙だが、最小単位の10Mが課金対象となる。