複製資料集

您不需要擷取、移動和重新載入資料到 BigQuery 中,即可在某一地區內複製資料集,或將資料集從一個地區複製到另一個地區。您可以一次性複製資料集,或者依自訂的週期性排程進行複製。

事前準備

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

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

所需權限

建立資料集副本前,請先確認建立資料集副本的人員在 BigQuery 中擁有下列必要權限:

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

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

    以下是擁有 bigquery.tables.list 權限的預先定義專案層級身分與存取權管理角色:

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

    以下是擁有 bigquery.tables.listbigquery.tables.create 權限的預先定義專案層級身分與存取權管理角色:

    • bigquery.dataEditor
    • bigquery.dataOwner
  4. bigquery.admin 這個預先定義的專案層級身分與存取權管理角色具備建立資料集副本的所有必要權限。如要進一步瞭解 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] (建立主題) 來建立主題。此選項會設定移轉作業的 Pub/Sub 執行通知

      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 專案 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 東京
asia-southeast1 新加坡
australia-southeast1 雪梨

多地區位置

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

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

後續步驟

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

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

這個網頁
需要協助嗎?請前往我們的支援網頁