マテリアライズド ビューのレプリカを作成する

このドキュメントでは、BigQuery でマテリアライズド ビューのレプリカを作成する方法について説明します。マテリアライズド ビューのレプリカは、外部 Amazon Simple Storage Service(Amazon S3)、Apache Iceberg、Salesforce Data Cloud のデータを BigQuery データセットに複製したもので、BigQuery のローカルでデータを使用できるようにします。これにより、下り(外向き)データの費用を回避し、クエリのパフォーマンスを向上させることができます。

始める前に

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Trusted Cloud project.

  3. このドキュメントのタスクを実行するために必要な Identity and Access Management(IAM)権限が付与されていることを確認します。
  4. 必要なロール

    このドキュメントのタスクの実行に必要な権限を取得するには、BigQuery 管理者roles/bigquery.admin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    この事前定義ロールには、このドキュメントのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    このドキュメントのタスクを実行するには、次の権限が必要です。

    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.replicateData
    • bigquery.jobs.create

    カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

    BigQuery IAM の詳細については、BigQuery の IAM の概要をご覧ください。

    マテリアライズド ビューのレプリカ用にデータセットを準備する

    マテリアライズド ビューのレプリカを作成するには、事前に次のタスクを完了する必要があります。

    1. Amazon S3 をサポートするリージョンデータセットを作成します。
    2. 前の手順で作成したデータセットにソーステーブルを作成します。ソーステーブルは、次のいずれかのテーブルタイプにできます。

    マテリアライズド ビューのレプリカを作成する

    次のオプションのいずれかを選択します。

    コンソール

    1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、マテリアライズド ビュー レプリカを作成するプロジェクトとデータセットに移動し、(アクションを表示) > [テーブルを作成] をクリックします。

    3. [テーブルの作成] ダイアログの [ソース] セクションで、次の操作を行います。

      1. [テーブルの作成元] で [既存のテーブル / ビュー] を選択します。
      2. [プロジェクト] に、ソーステーブルまたはビューが存在するプロジェクトを入力します。
      3. [データセット] に、ソーステーブルまたはビューが存在するデータセットを入力します。
      4. [ビュー] に、複製するソーステーブルまたはビューを入力します。ビューを選択する場合は、承認済みビューである必要があります。そうでない場合は、そのビューの生成に使用されるすべてのテーブルがビューのデータセットに存在している必要があります。
    4. 省略可: [ローカル マテリアライズド ビューの最大未更新] に、ローカル マテリアライズド ビューの max_stalenessを入力します。

    5. [テーブルを作成] ダイアログの [宛先] セクションで、次の操作を行います。

      1. [プロジェクト] に、マテリアライズド ビューのレプリカを作成するプロジェクトを入力します。
      2. [データセット] に、マテリアライズド ビューのレプリカを作成するデータセットを入力します。
      3. [レプリカのマテリアライズド ビューの名前] に、レプリカの名前を入力します。
    6. 省略可: マテリアライズド ビューのレプリカのタグ詳細オプションを指定します。[ローカル マテリアライズド ビュー データセット] にデータセットを指定しない場合、ソースデータと同じプロジェクトとリージョンに自動的に作成され、bq_auto_generated_local_mv_dataset という名前が付けられます。[レプリカのマテリアライズド ビューの名前] に名前を指定しない場合、ソースデータと同じプロジェクトとリージョンに自動的に作成され、接頭辞 bq_auto_generated_local_mv_ が付けられます。

    7. [テーブルを作成] をクリックします。

    新しいローカル マテリアライズド ビューが作成され(指定されていない場合)、ソース データセットで承認されます。その後、宛先データセットにマテリアライズド ビューのレプリカが作成されます。

    SQL

    1. 作成したデータセットのベーステーブルにマテリアライズド ビューを作成します。Amazon S3 リージョンにある別のデータセットにマテリアライズド ビューを作成することもできます。
    2. マテリアライズド ビューを作成したクエリで使用したソーステーブルを含むデータセットで、マテリアライズド ビューを承認します。
    3. ソーステーブルに対してメタデータ キャッシュの手動更新を構成した場合は、BQ.REFRESH_EXTERNAL_METADATA_CACHE システム プロシージャを実行してメタデータ キャッシュを更新します。
    4. BQ.REFRESH_MATERIALIZED_VIEW システム プロシージャを実行して、マテリアライズド ビューを更新します。
    5. CREATE MATERIALIZED VIEW AS REPLICA OF ステートメントを使用してマテリアライズド ビューのレプリカを作成します。

      CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME
      OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL)
      AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;

      次のように置き換えます。

      • PROJECT_ID: マテリアライズド ビューのレプリカを作成するプロジェクトの名前(例: myproject)。
      • BQ_DATASET: マテリアライズド ビューのレプリカを作成する BigQuery データセットの名前(例: bq_dataset)。データセットは、ソースのマテリアライズド ビューのリージョンに対応する BigQuery リージョンに存在する必要があります。
      • REPLICA_NAME: 作成するマテリアライズド ビュー レプリカの名前(例: my_mv_replica)。
      • REPLICATION_INTERVAL: ソースのマテリアライズド ビューからレプリカにデータを複製する頻度を秒単位で指定します。60~3,600 の値にする必要があります。デフォルトは 300(5 分)です。
      • S3_DATASET: ソースのマテリアライズド ビューを含むデータセットの名前(例: s3_dataset)。
      • MATERIALIZED_VIEW_NAME: 複製するマテリアライズド ビューの名前(例: my_mv)。

      次の例では、bq_datasetmv_replica というマテリアライズド ビュー レプリカが作成されます。

      CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica`
      OPTIONS(
      replication_interval_seconds=600
      )
      AS REPLICA OF `myproject.s3_dataset.my_s3_mv`

    マテリアライズド ビューのレプリカを作成すると、レプリケーション プロセスでソースのマテリアライズド ビューに対して変更がポーリングされ、データがマテリアライズド ビューのレプリカに複製されます。データは replication_interval_seconds または max_staleness オプションで指定した間隔で更新されます。最初のバックフィルが完了する前にレプリカに対してクエリを実行すると、backfill in progress エラーが発生します。最初のレプリケーションの完了後、マテリアライズド ビューのレプリカのデータをクエリできるようになります。