BigQueryのパーティション分割テーブルのパーティション数が4000から10000にアップデートしました(2024-05-29)

BigQuery

2024年5月29日、BigQueryのパーティション分割テーブルのパーティション数が4000から10000にアップデートされました。

BigQueryで時系列データ分析を行う際、多くのユーザーがパーティション分割テーブルを利用してきました。これまでは、日付を「時間単位列パーティショニング」で指定する場合、最大4000日(約11年)分のデータを扱うことができました。しかし、サービス開始から利用しているユーザーにとっては、あと数年でこの上限に達するため、データのローテーションなどの対策が必要になる時期でした。

今回のアップデートにより、パーティション分割テーブル毎のパーティション数が10000となり、10000日(約27年)分のデータを扱うことが可能になりました。これにより、当面「データが登録できなくなる」といった事態を心配する必要がなくなります。

詳細については、パーティション分割テーブルの割当上限をご参照ください。

パーティション分割テーブルとは

BigQueryのパーティション分割テーブルは、大量のデータを効率的に管理・クエリするための機能です。データをパーティションに分割することで、クエリ実行時に読み取るデータ量を削減し、パフォーマンスを向上させるとともにコストを削減することができます。以下に、BigQueryのパーティション分割テーブルの概要を説明します。

 

パーティション分割の種類

時間ベースのパーティション分割

  • 日付パーティション: 日付型の列を基にデータを日単位で分割します。各パーティションは特定の日付のデータを含みます。
  • タイムスタンプパーティション: タイムスタンプ型の列を基にデータを指定した時間単位(時間、日、月、年)で分割します。
  • 挿入日時によるパーティション: データが挿入されたタイムスタンプを基に、自動的に日単位で分割されます。

整数範囲のパーティション分割

  • 整数型の列を基に、指定した範囲ごとにデータを分割します。各パーティションは特定の整数範囲のデータを含みます。

パーティション分割の利点

パフォーマンスの向上

パーティション分割により、クエリ実行時に必要なパーティションのみをスキャンするため、全体のスキャン量が減少し、クエリの実行速度が向上します。

コストの削減

BigQueryではスキャンしたデータ量に基づいて料金が課金されるため、パーティション分割により不要なデータのスキャンを避けることで、クエリ実行コストを削減できます。

管理の簡素化

データの追加や削除がパーティション単位で行えるため、データの管理が簡単になります。例えば、古いデータの削除や新しいデータの追加が容易になります。

パーティション分割テーブルの作成

パーティション分割テーブルを作成するには、以下のSQL文を使用します。例として、日付パーティション分割を行う場合のSQL文を示します。

CREATE TABLE dataset.partitioned_table
(
  id INT64,
  name STRING,
  date DATE
)
PARTITION BY date
OPTIONS (
  partition_expiration_days=365,
  require_partition_filter=TRUE
);

この例では、date列に基づいて日付パーティションが作成されます。partition_expiration_daysオプションを使用して、パーティションの有効期限を設定できます。また、require_partition_filterオプションをTRUEに設定すると、クエリ実行時にパーティションフィルタを必須とすることで、誤って全パーティションをスキャンすることを防ぎます。

パーティションフィルタの使用

パーティション分割テーブルをクエリする際には、パーティションフィルタを使用して特定のパーティションのみを対象にすることが推奨されます。以下に例を示します。

SELECT *
FROM dataset.partitioned_table
WHERE date BETWEEN '2024-01-01' AND '2024-01-31';

このクエリでは、date列が2024年1月1日から2024年1月31日までのデータのみをスキャンします。

まとめ

BigQueryのパーティション分割テーブルは、大規模なデータセットの管理とクエリ実行を効率化するための強力な機能です。適切にパーティション分割を設定し、クエリにパーティションフィルタを使用することで、パフォーマンスの向上とコストの削減が可能になります。データの特性やクエリのパターンに応じて適切なパーティション分割方式を選択し、最適なデータ処理環境を構築しましょう。

今回のアップデートにより、パーティション分割テーブルのパーティション数が4000から10000に拡張されたことで、長期間にわたるデータの管理がさらに容易になりました。これにより、今後も安心してBigQueryを活用し続けることができるでしょう。

詳細については、パーティション分割テーブルの割当上限をご参照ください。

BigQuery

Posted by snow