複製資料集

您可以將地區內的資料集或從一個地區複製到另一個地區,而無需擷取、移動和重新載入資料到 BigQuery 中。您可以手動複製資料集,或者依自訂的週期性時間表進行複製。

事前準備

建立資料集副本之前的注意事項:

  • 複製資料集會使用 BigQuery 資料移轉服務的功能。請確認您已完成啟用 BigQuery 資料移轉服務的一切必要動作。
  • 如果您要使用傳統 BigQuery 網頁版 UI 建立移轉作業,請允許瀏覽器中來自 bigquery.cloud.google.com 的瀏覽器彈出式視窗,以便查看權限視窗。您必須授權 BigQuery 資料移轉服務,允許這項服務管理您的資料集副本 (這屬於資料移轉的範疇)。
  • 在與來源資料集相同或不同的地區建立 BigQuery 資料集做為目的地資料集。您建立資料集時,可以指定儲存 BigQuery 資料的位置。目前並非所有地區都支援資料集複製功能 (請參閱位置限制一節)。每個專案的資料集名稱不得重複。
  • 找出您要複製的來源資料集 ID,以及來源專案 ID。
  • 如果想要為 Cloud Pub/Sub 設定移轉執行通知,您必須具有 pubsub.topics.setIamPolicy 權限。如果您只是要設定電子郵件通知,就不需要 Cloud Pub/Sub 權限。詳情請參閱 BigQuery 資料移轉服務執行通知一文。

所需權限

建立資料集副本前,請確認負責操作的人員在 BigQuery 中具備下列權限:

  1. 建立副本移轉作業的 bigquery.transfers.update 權限。

  2. 來源資料集的 bigquery.tables.list 權限。

    以下是具備 bigquery.tables.list 權限的預先定義專案層級 IAM 角色:

    • bigquery.dataViewer
    • bigquery.dataEditor
    • bigquery.dataOwner
    • bigquery.metadataViewer
    • bigquery.user
  3. 目的地資料集的 bigquery.tables.listbigquery.tables.create 權限。

    以下是擁有 bigquery.tables.listbigquery.tables.create 權限的預先定義專案層級 IAM 角色:

    • bigquery.dataEditor
    • bigquery.dataOwner
  4. bigquery.admin 預先定義的專案層級 IAM 角色包含資料集副本的所有必要權限。如要進一步瞭解 BigQuery 中的身分與存取權管理角色,請參閱存取權控管一文。

建立資料集副本

建立資料集副本。

主控台

選項 1:使用 [Copy Dataset] (複製資料集) 圖示。

  1. 前往 BigQuery 網頁版 UI。

    前往 BigQuery 網頁版 UI

  2. 選擇要複製的來源資料集名稱。

  3. 按一下 [Copy Dataset] (複製資料集) 圖示。

    [Copy Dataset] (複製資料集) 圖示

  4. 在「Copy dataset」(複製資料集) 對話方塊中,選取專案 ID 和目的地資料集 ID。專案和資料集可能位於不同地區,但並非所有地區都支援資料集複製功能

  5. 專案中的資料集名稱不得重複。

  6. 如有需要,請勾選 [Overwrite destination table] (覆寫目的地資料表) 方塊,重新整理 (覆寫) 目的地資料集中的所有資料。資料表和結構定義都會被覆寫。

    「Copy dataset」(複製資料集) 對話方塊

  7. 建議您刪除舊有資料集,以免產生額外的儲存空間費用。

選項 2:使用「Transfers」(轉移作業) UI。

  1. 前往 BigQuery 網頁版 UI。

    前往 BigQuery 網頁版 UI

  2. 按一下 [Transfers] (移轉作業)

  3. 按一下 [+ Create a transfer] (+ 建立轉移作業)

  4. 在「Create Transfer」(建立轉移作業) 頁面:

    • 於「Source Type」(來源類型) 區段的「Source」(來源) 項目中,選擇 [Dataset Copy] (資料集複製)

      移轉作業來源

    • 在「Transfer config name」(轉移設定名稱) 區段中,針對「Display name」(顯示名稱) 輸入移轉作業的名稱,例如 My Transfer。移轉作業名稱可以是任何容易辨識的值,方便您日後在必要時進行修改。

      移轉作業名稱

    • 在「Schedule options」(排程選項) 區段或「Schedule」(排程) 中,保留預設值 ([Start now] (立即開始)),或按一下 [Start at a set time] (於設定的時間開始)

      • 在「Repeats」(重複時間間隔) 部分,選擇多久執行一次移轉作業的選項。選項包括:

        • Daily (每天) (預設)
        • Weekly (每週)
        • Monthly (每月)
        • Custom (自訂)
        • On-demand (隨選)

        如果您選擇 [Daily] (每天) 以外的選項,則有其他選項可供使用。舉例而言,如果選擇 [Weekly] (每週),則會出現一個可供選擇星期幾的選項。

      • 在「Start date and run time」(開始日期和執行時間),輸入開始移轉的日期和時間。如果您選擇 [Start now] (立即開始),就會停用此選項。

        移轉作業時間表

    • 針對「Destination dataset」(目的地資料集),選擇您在不同地區中為儲存資料而建立的資料集。

    • 針對「Source dataset」(來源資料集),輸入您要複製的資料集名稱。

    • 針對「Source project」(來源專案),輸入來源資料集所屬專案的 ID。

    • (選用) 如果要重新整理 (覆寫) 目的地資料集中的所有資料,請勾選 [Overwrite destination table] (覆寫目的地資料表) 方塊。資料表和結構定義都會被覆寫。

      新資料集副本

    • (選用) 在「Notification options」(通知選項) 區段中:

      • 按一下啟用電子郵件通知的切換開關。當您啟用此選項時,移轉管理員會在移轉作業失敗時收到電子郵件通知。
      • 在「Select a Cloud Pub/Sub topic」(選取 Cloud Pub/Sub 主題),選擇您的主題名稱,或是點選 [Create a topic] (建立主題) 來建立主題。您可透過此選項設定移轉作業的 Cloud Pub/Sub 執行通知

      Cloud Pub/Sub 主題

  5. 按一下 [Save] (儲存)

  6. 建議您刪除舊有資料集,以免產生額外的儲存空間費用。

傳統版 UI

  1. 使用傳統 BigQuery 網頁版 UI

    前往 BigQuery 傳統網頁版 UI

  2. 按一下 [Transfers] (移轉作業)

  3. 按一下 [Add Transfer] (新增移轉作業)。

  4. 在「New Transfer」(新增移轉作業) 頁面上:

    • 在「Source」(來源) 部分,選擇 [Dataset Copy]
    • 在「Display name」(顯示名稱) 部分, 輸入移轉作業的名稱,例如 My Dataset Copy。顯示名稱可以是任何容易辨識的值,方便您日後在必要時進行修改。
    • (選用) 在「Schedule」(排程) 部分,您可以保留預設值 [Daily] (每天) (即從建立時間開始,每 24 小時一次),也可以點選 [Edit] (編輯) 來變更時間。時間間隔亦可改成 [Weekly] (每週)、[Monthly] (每月) 或 [Custom] (自訂)。如果選取 [Custom] (自訂),您應以類似 Cron 的表示方式輸入時間間隔,例如:every 12 hours。允許的最短週期為 12 小時。

    • 在「Destination dataset」(目的地資料集) 部分,選擇適當的資料集。

    • 針對「Source dataset」(來源資料集) 部分,輸入來源資料集名稱。

    • 對於「Source project」(來源專案) 部分,選取來源資料集所在的專案。

      新資料集副本

    • (選用) 展開「Advanced」(進階) 區段,然後設定移轉作業的執行通知

    • 在「Cloud Pub/Sub Topic」(Cloud Pub/Sub 主題) 部分,輸入您的 Cloud Pub/Sub 主題名稱,例如 projects/myproject/topics/mytopic

    • 勾選 [Send email notifications] (傳送電子郵件通知),讓系統在移轉執行失敗時,寄送電子郵件通知。

      Cloud Pub/Sub 主題

  5. 按一下 [Add] (新增)

  6. 建議您刪除舊有資料集,以免產生額外的儲存空間費用。

CLI

輸入 bq mk 指令並提供轉換建立標記 --transfer_config。也須提供以下標記:

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
    

其中:

  • --project_id 是 Google Cloud Platform 專案 ID。如果未指定 --project_id,則使用預設專案。
  • --data_source 是資料來源:cross_region_copy
  • --target_dataset 是移轉設定的 BigQuery 目標資料集。
  • --display_name 是複製作業或移轉設定的顯示名稱。移轉作業名稱可以是任何容易辨識的值,方便您日後在必要時進行修改。
  • --params 含有已建立移轉設定的 JSON 格式參數。例如:--params='{"param":"param_value"}'。對於資料集複製,您必須提供 source_dataset_idsource_project_id,以及選用的 overwrite_destination_table 參數。

資料集複製設定的參數如下:

  • source_dataset_id:您要複製的來源資料集 ID。
  • source_project_id:來源資料集所在專案 ID。
  • (選用) overwrite_destination_table:如果要截斷前一個副本的資料表並重新整理所有資料,請加入此參數。

舉例來說,下列指令會分別建立名稱為 My Transfer 的資料集副本設定、名稱為 mydataset 的目標資料集和 ID 為 myproject 的專案。

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

API

使用 projects.locations.transferConfigs.create 方法,並提供 TransferConfig 資源的執行個體

查看和重新整理資料集複製作業

您可以在「Transfers」(傳輸作業) 下查看進度並檢視資料集複製的詳細資料。

主控台

[Transfers] (傳輸作業) 按鈕 (主控台)

查看移轉詳細資料 (主控台)

資料集複製重新整理執行作業會依您指定的排程執行,排程是可以設定的。預設值為每 24 小時。如想要求新的作業立即執行,請按一下 [More] (更多) 選單,然後點選 [Refresh Now] (立即重新整理)

重新整理資料集複製按鈕

傳統版 UI

[Transfers] 按鈕 (傳統)

資料集複製重新整理執行作業會依您指定的排程執行,排程是可以設定的。預設值為每 24 小時。如想要求新的作業立即執行,請按一下 [Refresh Now]

重新整理資料集複製按鈕

定價

在 Beta 測試期間,資料集複製不需要付費。

一般情況下,跨地區複製資料的費用會與跨地區 Compute Engine 網路輸出量定價費率相同。

BigQuery 傳送壓縮資料以跨地區進行複製,因此計費的 GB 可能小於資料集的大小。

配額與限制

以下限制適用於在 BigQuery 中複製資料集的情況。這些限制適用於透過指令列工具 (CLI)、主控台或 BigQuery 傳統網頁版 UI 建立的複製工作,以及使用複製類型 jobs.insert API 方法透過程式提交的複製工作。

儲存和查詢的所有標準 BigQuery 用量費用都適用於複製的資料。詳情請參閱 BigQuery 定價一文。

BigQuery 資料集複製有下列幾項限制:

配額

相同地區

複製同一地區內的資料集會與所有 BigQuery 複製工作的配額相同。

以下限制適用於在 BigQuery 中複製資料表的情況。這些限制適用於透過指令列工具、主控台或 BigQuery 傳統網頁版 UI 複製資料時自動建立的工作,以及使用複製類型 jobs.insert API 方法透過程式提交的複製工作。

  • 每個目標資料表每日的複製工作數量 - 1,000 個 (包括失敗的載入作業)
  • 每個專案每日的複製工作數量 - 100,000 個 (包括失敗的工作)

跨地區

  • 每個目的地資料表每日的複製工作數量 - 100 個 (包括失敗的工作)
  • 每個專案每日的複製工作數量 - 2,000 個 (包括失敗的工作)

一般限制

  • 您必須先建立目的地資料集,才能建立資料集複製的移轉設定。

  • 針對每一個資料集複製作業設定,您一次可以有一個有效副本。其他轉移作業將排入佇列。

資料類型限制

  • 系統不支援複製檢視表。
  • 系統不支援複製具體化檢視表。
  • 系統不支援複製外部資料表。
  • 系統不支援在串流緩衝區中複製儲存空間。
  • 依同一地區複製或跨地區複製而定,對於複製使用客戶管理的金鑰加密的表格的支援會有所不同。

相同地區

對於相同地區內的資料集複製,支援複製加密資料表 (包括使用客戶管理的金鑰 (CMEK) 加密的資料表)。

跨地區

系統支援跨地區複製以預設方式加密的資料表,目前不支援跨地區複製以客戶管理的金鑰 (CMEK) 加密的資料表。將資料表複製到目的地資料集時,系統會略過以 CMEK 加密的資料表。

來源資料集限制

來源資料集大小上限為 20,000 個資料表。依同一地區或跨地區複製而定,每次作業可複製的資料表數量會有所不同。

相同地區

  • 來源資料集大小最多可包含 20,000 個資料表。

  • 每次作業複製到目的地資料集時,最多可複製 20,000 個資料表。

跨地區

  • 來源資料集大小最多可包含 20,000 個資料表。

  • 每次作業複製到目的地資料集時,最多可複製 1,000 個資料表。

範例

如果您設定包含 8,000 個資料表的跨地區資料集複製作業,則 BigQuery 資料移轉服務將依序自動建立 8 次執行作業。第一次作業會複製 1,000 個資料表,24 小時後另一次作業會複製 1,000 個資料表,直到資料集中的所有資料表都複製完成為止。每個資料集最多可包含 20,000 個資料表。

資料表限制

  • 目前支援複製分區資料表,但是不支援將資料附加到分區資料表。

  • 如果來源資料集和目的地資料集中有資料表,且上次成功複製後沒有任何變更,就會略過此資料表。即使勾選 [Override destination table] (覆寫目的地資料表) 方塊也是如此。

  • 截斷資料表時,資料集複製作業在開始複製之前不會偵測對目的地資料集所做的任何變更。目的地資料集中的所有資料都會重新整理 (覆寫)。資料表和結構定義都會被覆寫。

位置限制

資料集可以從一個地區複製到另一個地區、從單個地區複製到多個地區、從多個地區複製到單個地區,或從多個地區複製到多個地區。

目前並非所有地區都支持資料集複製功能。您可以在目前支援 BigQuery 資料移轉服務的地區中建立資料集副本,如下所示。

地區位置

地區名稱 地區說明
歐洲
europe-west2 倫敦
亞太地區
asia-northeast1 東京
australia-southeast1 雪梨

多地區位置

多地區名稱 多地區說明
EU 歐盟1
US 美國

1 位於 EU 多地區的資料不會儲存在 europe-west2 (London) 資料中心。

後續步驟

  • 要瞭解如何使用移轉作業,包括取得移轉設定資訊、列出移轉設定以及查看移轉執行記錄,請參閱使用移轉功能一文。
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁