创建物化视图副本

本文档介绍了如何在 BigQuery 中创建具体化视图副本。您可以使用物化视图副本,使 Amazon Simple Storage Service (Amazon S3) 数据在本地可用于联接。

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

所需权限

授予为用户提供执行本文档中的每个任务所需权限的 Identity and Access Management (IAM) 角色。

如需创建物化视图副本,您需要以下 IAM 权限:

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

以下每个预定义 IAM 角色都包含创建物化视图所需的权限:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

如需详细了解 BigQuery Identity and Access Management (IAM),请参阅 BigQuery 中的 IAM 简介

前提条件

在创建物化视图副本之前,您必须完成以下任务:

  1. 支持 Amazon S3 的区域创建数据集
  2. 在您在第 1 步创建的数据集中创建一个基表。该基表可以是以下任意表类型:
  3. 在您在第 1 步创建的数据集中,基于 Amazon S3 BigLake 表创建具体化视图。您还可以在支持 Amazon S3 的区域中的其他数据集中创建物化视图。
  4. 对包含创建物化视图的查询中使用的来源 Amazon S3 BigLake 表的数据集授权物化视图
  5. 如果您为 Amazon S3 BigLake 表配置了手动元数据缓存刷新,请运行 BQ.REFRESH_EXTERNAL_METADATA_CACHE 系统过程以刷新元数据缓存。
  6. 运行 BQ.REFRESH_MATERIALIZED_VIEW 系统过程以刷新物化视图。

创建物化视图副本

如需创建物化视图副本,请使用 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 的值(包括 60 和 3,600)。默认值为 300(5 分钟)。
  • S3_DATASET:包含来源物化视图的数据集的名称,例如 s3_dataset
  • MATERIALIZED_VIEW_NAME:要复制的物化视图的名称,例如 my_mv

以下示例会在 bq_dataset 中创建一个名为 mv_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 选项中指定的时间间隔刷新数据。如果您在第一次回填完成之前查询副本,则会收到 backfill in progress 错误。您可以在首次复制完成后查询物化视图副本中的数据。