建立具體化檢視表副本
本文說明如何在 BigQuery 中建立具體化檢視表副本。具體化檢視區塊副本是外部 Amazon Simple Storage Service (Amazon S3)、Apache Iceberg 或 Salesforce Data Cloud 資料在 BigQuery 資料集中的副本,因此資料可在 BigQuery 中本機使用,有助於避免資料輸出費用並提升查詢效能。
事前準備
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
- 請確認您具備必要的身分與存取權管理 (IAM) 權限,才能執行本文中的工作。
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
- 在支援 Amazon S3 的區域中建立資料集
- 在您於上一個步驟中建立的資料集中,建立來源資料表。來源表格可以是下列任一表格類型:
- 已啟用中繼資料快取,且未使用 Iceberg 檔案格式的 Amazon S3 BigLake 資料表。
- Apache Iceberg 外部資料表。
- Data Cloud 資料表。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,前往要建立具體化檢視副本的專案和資料集,然後依序點選 >「建立資料表」。
「查看動作」在「Create table」(建立資料表) 對話方塊的「Source」(來源) 區段中,執行下列操作:
- 在「Create table from」(使用下列資料建立資料表) 部分,選取「Existing table/view」(現有資料表/檢視區塊)。
- 在「Project」(專案) 部分,輸入來源資料表或檢視區塊所在的專案。
- 在「Dataset」(資料集) 部分,輸入來源資料表或檢視表所在的資料集。
- 在「View」(檢視畫面) 中,輸入要複製的來源資料表或檢視畫面。如果選擇檢視表,則必須是授權檢視表;否則,用於產生該檢視表的所有資料表都必須位於檢視表的資料集中。
選用:在「本機 materialized view 過時程度上限」中,輸入本機 materialized view 的
max_staleness
值。在「Create table」(建立資料表) 對話方塊的「Destination」(目的地) 區段中,執行下列操作:
- 在「Project」(專案) 部分,輸入要建立具體化檢視表副本的專案。
- 在「Dataset」(資料集) 部分,輸入要建立具體化檢視表副本的資料集。
- 在「Replica materialized view name」(備用資源 materialized view 名稱) 部分,輸入備用資源的名稱。
選用:為具體化檢視區塊副本指定標記和進階選項。如果沒有為「本機具體化檢視資料集」指定資料集,系統會在與來源資料相同的專案和區域中自動建立資料集,並命名為
bq_auto_generated_local_mv_dataset
。如未指定本機具體化檢視表名稱,系統會自動在來源資料所在的專案和區域中建立具體化檢視表,並加上bq_auto_generated_local_mv_
前置字串。點選「建立資料表」。
- 在您建立的資料集中,對基礎資料表建立具體化檢視區塊。您也可以在 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 之間 (含首尾)。預設值為 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`
必要的角色
如要取得執行本文中工作所需的權限,請要求管理員授予您 BigQuery 管理員 (roles/bigquery.admin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備執行本文中工作所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要執行本文中的工作,必須具備下列權限:
如要進一步瞭解 BigQuery IAM,請參閱「BigQuery 中的 IAM 簡介」。
準備具體化檢視副本的資料集
建立具體化檢視區塊副本前,請先完成下列工作:
建立具體化檢視表副本
選取下列選項之一:
主控台
系統會建立新的本機具體化檢視表 (如果未指定),並在來源資料集中授權。然後在目的地資料集中建立 materialized view 副本。
SQL
建立 materialized view 副本後,複製程序會輪詢來源 materialized view 的變更,並將資料複製到 materialized view 副本,按照您在 replication_interval_seconds
或 max_staleness
選項中指定的間隔時間重新整理資料。如果您在第一次補充作業完成前查詢副本,會收到 backfill in progress
錯誤。第一次複製完成後,您就可以查詢具體化檢視表副本中的資料。