创建物化视图副本
本文档介绍了如何在 BigQuery 中创建具体化视图副本。您可以使用物化视图副本,使 Amazon Simple Storage Service (Amazon S3) 数据在本地可用于联接。
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
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 简介。
前提条件
在创建物化视图副本之前,您必须完成以下任务:
- 在支持 Amazon S3 的区域中创建数据集。
- 在您在第 1 步创建的数据集中创建一个基表。该基表可以是以下任意表类型:
- 启用了元数据缓存且不使用 Iceberg 文件格式的 Amazon S3 BigLake 表
- Apache Iceberg BigLake 表
- Salesforce Data Cloud 表
- 在您在第 1 步创建的数据集中,基于 Amazon S3 BigLake 表创建具体化视图。您还可以在支持 Amazon S3 的区域中的其他数据集中创建物化视图。
- 对包含创建物化视图的查询中使用的来源 Amazon S3 BigLake 表的数据集授权物化视图。
- 如果您为 Amazon S3 BigLake 表配置了手动元数据缓存刷新,请运行
BQ.REFRESH_EXTERNAL_METADATA_CACHE
系统过程以刷新元数据缓存。 - 运行
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
错误。您可以在首次复制完成后查询物化视图副本中的数据。