クエリのパフォーマンスを向上させ、費用を管理するために、BigQuery テーブルを小さなセグメントに分割することが必要になる場合があります。Datastream は BigQuery のテーブルのパーティション分割テーブルをサポートしていないため、ストリームを開始する前にパーティションを手動で追加する必要があります。BigQuery でのパーティショニングの概要については、パーティション分割テーブルの概要をご覧ください。
BigQuery のパーティション分割テーブル
BigQuery でテーブルをパーティショニングするには、ユースケースに応じて、以降のセクションで説明するオプションのいずれかを使用します。
オプション 1: テーブルが BigQuery にすでに存在し、ストリームに含まれている
- ストリームのソース構成からテーブルを除外します。ソース構成へのオブジェクトの追加と除外の詳細については、ソース データベースを構成するをご覧ください。
- Datastream がテーブルのすべてのイベントの処理を完了するまで数分待ちます。
- BigQuery でパーティション分割テーブルを作成します。元の BigQuery テーブルにすでに存在するデータを保持する場合は、テーブルに別の一時的な名前を付けます。
- 元のテーブルから新しいパーティション分割テーブルにデータをコピーします。
- 元のテーブルを削除するか、名前を変更します。
- 新しいテーブルの一時的な名前を元のテーブルの名前に変更します。
- ソーステーブルをストリームの構成に追加します
オプション 2: BigQuery にテーブルがない
次のいずれかの方法を使用して BigQuery にテーブルを作成します。
- BigQuery Migration Toolkit を使用する。
Datastream 互換の BigQuery テーブルを手動で作成します。たとえば、テーブルを作成し、
TIMESTAMP
列に基づいてデータをパーティショニングする場合は、次のようなクエリを使用できます。CREATE TABLE dataset.partitioned_table ( 'id' INT64, 'name' STRING 'update_date' DATETIME, 'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>, PRIMARY KEY ('id') NOT ENFORCED ) PARTITION BY TIMESTAMP(update_date)
パーティション分割テーブルを作成したら、要件に応じて
max_staleness
値が設定されていることを確認します。値を設定しない場合は、デフォルト値の0
が設定されます。詳細については、max_staleness
オプションで BigQuery テーブルを使用するをご覧ください。必要に応じて、ストリームに手動バックフィルを設定した場合は、テーブルのバックフィルを開始します。