BigQueryのパーティション分割テーブルのパーティション数が4000から10000にアップデートしました(2024-05-29)
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を活用し続けることができるでしょう。
詳細については、パーティション分割テーブルの割当上限をご参照ください。