建立具體化檢視表副本

本文說明如何在 BigQuery 中建立具體化檢視表副本。具體化檢視區塊副本是外部 Amazon Simple Storage Service (Amazon S3)、Apache Iceberg 或 Salesforce Data Cloud 資料在 BigQuery 資料集中的副本,因此資料可在 BigQuery 中本機使用,有助於避免資料輸出費用並提升查詢效能。

事前準備

  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. Verify 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. Verify that billing is enabled for your Google Cloud project.

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

    如要取得執行本文中工作所需的權限,請要求管理員授予您 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. 前往 Google 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 錯誤。第一次複製完成後,您就可以查詢具體化檢視表副本中的資料。