簡體   English   中英

如何在不同區域的數據集之間移動數據?

[英]how to move data between datasets in different regions?

我正在使用與 Firebase 集成的 BigQuery,所有數據集都在同一個項目中。 我的analytics數據集在useast-4中,但由於某種原因,我的firebase_imported_segments數據集區域被標記為US我想將數據從analytics數據集移動到firebase_imported_segments中的表中。

起初,我嘗試了一個簡單的 INSERT 查詢,但出現錯誤firebase_imported_segments was not found in location us-east4

因此,我嘗試構建一個 SELECT 語句並使用“保存結果 > 大查詢表”導出行,但這給出了一個類似的錯誤,即找不到目標數據集。 奇怪的是,如果我在firebase_imported_segments中創建一個表並嘗試使用該表名保存結果,我會收到“表已存在”錯誤。 所以並不是它找不到firebase_imported_segments數據集,它只是不會在該數據集中創建新表。

我該如何解決這個問題? 我看到一些 BQ 文檔表明在區域之間移動數據是可能的,但我沒有簡單地介紹它是如何完成的。 我也很困惑為什么 firebase 會在一個特定區域 ( useast-4 ) 中放置一些數據,然后在多區域 ( US ) 中放置其他數據(如果它們不兼容)。

您可以使用 BigQuery UI 中的“復制”移動數據集,然后刪除舊數據集。 請參閱復制數據集文檔

選項 1:使用復制按鈕。

  1. Go 到 Cloud 控制台中的 BigQuery 頁面。

  2. 在資源管理器面板中,展開您的項目和 select 數據集。

  3. 展開更多操作選項(三點按鈕)並單擊打開。

  4. 單擊復制。 在出現的“復制數據集”對話框中,執行以下操作:

    一種。 在數據集字段中,創建新數據集或 select 列表中的現有數據集 ID。

    項目中的數據集名稱必須是唯一的。 項目和數據集可以在不同的地域,但並非所有地域都支持跨地域復制數據集。

    b. 在位置字段中,顯示源數據集的位置。

    c。可選:要用源表覆蓋目標表的數據和架構,select 覆蓋目標表復選框。

    d. 要復制數據集,請單擊復制。

為避免額外的存儲成本,請考慮刪除舊數據集。

選項 2:使用 BigQuery 數據傳輸服務。

  1. 啟用 BigQuery 數據傳輸服務。

  2. 為您的數據源創建傳輸。

我對此進行了測試,可以確認它是否有效。 我在us-east4中創建了一個名為analytics_us_regional的數據集,並有一個名為east_4_table的表,並將其復制到位於US的數據集。

us-east4復制到US數據集:

在此處輸入圖像描述

啟動復制時,會創建一個數據傳輸作業:

在此處輸入圖像描述

復制到US

在此處輸入圖像描述

關於位於us-east4的 firebase 中的數據,從firebase 導出到 BQ 首次啟用導出時,用戶將定義表格的位置。 可能最初選擇了us-east4區域。

不知道它是否適用於你的情況,但我在 europe-west1 有一個數據集,我想將它復制到歐盟地區,我已經完成了這兩種方式並且都有效:

第一種方式:1-單擊要復制的數據集,然后單擊“復制”。

2- 在數據集目標的復制菜單上單擊“創建新數據集”和 select 您希望該數據集所在的目標區域。 單擊創建數據集。

3 - 在“復制數據集”菜單上單擊復制。

4 - 當目標數據集位於 JURISDICTION_EU 時,您將收到錯誤“無法在 REGION_EUROPE_WEST_1 中創建傳輸”,但將在您的目標區域創建沒有表的數據集。

5 - 現在,如果您嘗試通過單擊“復制”並選擇在第 4 組中創建的數據集來復制源數據集,它現在可以工作了。

第二種方式:(最佳方式)1 - 打開一個新的查詢表點擊更多 - >查詢設置 - >高級選項,取消選中“自動位置選擇”和 select 你想要的目標區域或多區域(在我的例子中是歐盟) .

2- 在此查詢表上運行“CREATE SCHEMA your_new_dataset_name ”-> 這將在第 1 點中選擇的目標區域中創建數據集“your_new_dataset_name”。

3 - 單擊要復制的數據集,然后單擊“復制”。

4 - 在數據集目標 select 上的復制菜單上,點 2 中創建的數據集,然后單擊復制。

兩種方式都使用 BigQuery 數據傳輸服務,但您不需要直接訪問該服務。 事實上,這兩種方法做的事情完全相同,即在要復制的正確區域中創建目標空數據集,一旦復制 function 將正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM