建立具體化檢視表副本

本文說明如何在 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. Verify that billing is enabled for your Trusted Cloud project.

  3. 請確認您具備必要的身分與存取權管理 (IAM) 權限,才能執行本文中的工作。
  4. 必要的角色

    如要取得執行本文中工作所需的權限,請要求管理員授予您 BigQuery 管理員 (roles/bigquery.admin) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    這個預先定義的角色具備執行本文中工作所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

    所需權限

    如要執行本文中的工作,必須具備下列權限:

    • 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. 在「Explorer」窗格中,前往要建立具體化檢視副本的專案和資料集,然後依序點選 「查看動作」>「建立資料表」

    3. 在「Create table」(建立資料表) 對話方塊的「Source」(來源) 區段中,執行下列操作:

      1. 在「Create table from」(使用下列資料建立資料表) 部分,選取「Existing table/view」(現有資料表/檢視區塊)
      2. 在「Project」(專案) 部分,輸入來源資料表或檢視區塊所在的專案。
      3. 在「Dataset」(資料集) 部分,輸入來源資料表或檢視表所在的資料集。
      4. 在「View」(檢視畫面) 中,輸入要複製的來源資料表或檢視畫面。如果選擇檢視表,則必須是授權檢視表;否則,用於產生該檢視表的所有資料表都必須位於檢視表的資料集中。
    4. 選用:在「本機 materialized view 過時程度上限」中,輸入本機 materialized view 的 max_staleness

    5. 在「Create table」(建立資料表) 對話方塊的「Destination」(目的地) 區段中,執行下列操作:

      1. 在「Project」(專案) 部分,輸入要建立具體化檢視表副本的專案。
      2. 在「Dataset」(資料集) 部分,輸入要建立具體化檢視表副本的資料集。
      3. 在「Replica materialized view name」(備用資源 materialized view 名稱) 部分,輸入備用資源的名稱。
    6. 選用:為具體化檢視區塊副本指定標記進階選項。如果沒有為「本機具體化檢視資料集」指定資料集,系統會在與來源資料相同的專案和區域中自動建立資料集,並命名為 bq_auto_generated_local_mv_dataset。如未指定本機具體化檢視表名稱,系統會自動在來源資料所在的專案和區域中建立具體化檢視表,並加上 bq_auto_generated_local_mv_ 前置字串。

    7. 點選「建立資料表」。

    系統會建立新的本機具體化檢視表 (如果未指定),並在來源資料集中授權。然後在目的地資料集中建立 materialized view 副本。

    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_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`

    建立 materialized view 副本後,複製程序會輪詢來源 materialized view 的變更,並將資料複製到 materialized view 副本,按照您在 replication_interval_secondsmax_staleness 選項中指定的間隔時間重新整理資料。如果您在第一次補充作業完成前查詢副本,會收到 backfill in progress 錯誤。第一次複製完成後,您就可以查詢具體化檢視表副本中的資料。