Datastream を使用して、BigQuery のパーティション分割テーブルにデータを取り込む

クエリのパフォーマンスを向上させ、コストを抑えるために、BigQuery テーブルを小さなセグメントに分割する必要がある場合があります。Datastream は BigQuery でのテーブルのパーティショニングをサポートしていないため、ストリームを開始する前にパーティションを手動で追加する必要があります。BigQuery でのパーティショニングに関する一般的な情報については、パーティション分割テーブルの概要をご覧ください。

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

BigQuery でテーブルをパーティショニングするには、ユースケースに応じて、以降のセクションで説明するオプションのいずれかを使用します。

オプション 1: テーブルがすでに BigQuery に存在し、ストリームに含まれている

  1. ストリームのソース構成からテーブルを除外します。ソース構成へのオブジェクトの追加と除外の詳細については、ソース データベースを構成するをご覧ください。
  2. 数分待ってから、Datastream がテーブルのすべてのイベントの処理を完了したことを確認してください。
  3. BigQuery でパーティション分割テーブルを作成します。 元の BigQuery テーブルにすでに存在しているデータを保持する場合は、テーブルに別の一時的な名前を付けます。
  4. 元のテーブルから新しいパーティション分割テーブルにデータをコピーします。
  5. 元のテーブルを削除するか、名前を変更します。
  6. 新しいテーブルの一時名を元のテーブルの名前に変更します。
  7. ソーステーブルをストリームの構成に追加します

オプション 2: テーブルが BigQuery に存在しない

  1. 次のいずれかの方法で BigQuery でテーブルを作成します。

    • BigQuery 移行ツールキットを使用する。
    • 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)
      
  2. パーティション分割テーブルを作成したら、要件に従ってその max_staleness 値が設定されていることを確認します。値を設定しない場合は、デフォルト値の 0 が設定されます。詳細については、max_staleness オプションで BigQuery テーブルを使用するをご覧ください。

  3. ソーステーブルをストリームの構成に追加します

  4. 必要に応じて、ストリームに手動バックフィルを設定した場合は、テーブルのバックフィルを開始します。