创建物化视图副本
本文档介绍了如何在 BigQuery 中创建物化视图副本。物化视图副本是 BigQuery 数据集中外部 Amazon Simple Storage Service (Amazon S3)、Apache Iceberg 或 Salesforce Data Cloud 数据的复制,以便在 BigQuery 中本地提供数据,从而帮助您避免数据出站流量费用并提高查询性能。
准备工作
- 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) 权限,以便执行本文档中的任务。
所需的角色
如需获得执行本文档中任务所需的权限,请让您的管理员向您授予 BigQuery Admin (roles/bigquery.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含执行本文档中的任务所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需执行本文档中的任务,您需要拥有以下权限:
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
如需详细了解 BigQuery IAM,请参阅 BigQuery 中的 IAM 简介。
为物化视图副本准备数据集
在创建物化视图副本之前,您必须完成以下任务:
- 在支持 Amazon S3 的区域中创建数据集
- 在您在上一步中创建的数据集中创建一个来源表。该来源表可以是以下任意表类型:
- 启用了元数据缓存且不使用 Iceberg 文件格式的 Amazon S3 BigLake 表
- 适用于 Apache Iceberg 的 BigLake 外部表。
- Data Cloud 表。
创建物化视图副本
从下列选项中选择一项:
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,找到要创建视图副本的项目和数据集,然后依次点击 > 创建表。
查看操作在创建表对话框的来源部分中,执行以下操作:
- 对于基于以下数据源创建表,选择现有表/视图。
- 对于项目,请输入来源表或视图所在的项目。
- 在数据集部分,输入来源表或视图所在的数据集。
- 对于视图,请输入要复制的来源表或视图。如果您选择视图,则该视图必须是已获授权的视图;如果不是,则用于生成该视图的所有表必须位于该视图的数据集中。
可选:对于本地物化视图最长过时期限,请为本地物化视图输入
max_staleness
值。在创建表对话框的目标部分,执行以下操作:
- 对于项目,请输入要在其中创建物化视图副本的项目。
- 在数据集部分,输入要在其中创建物化视图副本的数据集。
- 对于副本物化视图名称,请为副本输入一个名称。
可选:为物化视图副本指定标记和高级选项。如果您未为本地物化视图数据集指定数据集,系统会在与来源数据相同的项目和区域中自动创建一个数据集,并将其命名为
bq_auto_generated_local_mv_dataset
。如果您未为本地物化视图名称指定名称,系统会在与来源数据相同的项目和区域中自动创建一个名称,并为其指定前缀bq_auto_generated_local_mv_
。点击创建表。
系统会在源数据集中创建新的本地物化视图(如果未指定)并对其进行授权。然后,系统会在目标数据集中创建物化视图副本。
SQL
- 在您创建的数据集中,对基表创建一个物化视图。您还可以在 Amazon S3 区域中的其他数据集中创建物化视图。
- 对包含创建物化视图的查询中使用的来源表的数据集授权物化视图。
- 如果您为来源表配置了手动元数据缓存刷新,请运行
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
或 max_staleness
选项中指定的时间间隔刷新数据。如果您在第一次回填完成之前查询副本,则会收到 backfill in progress
错误。您可以在首次复制完成后查询物化视图副本中的数据。