

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 連線至 Google BigQuery AWS Schema Conversion Tool
<a name="CHAP_Source.BigQuery"></a>

您可以使用 AWS SCT 將結構描述、程式碼物件和應用程式程式碼從 BigQuery 轉換為 Amazon Redshift。

## 作為來源的 BigQuery 權限
<a name="CHAP_Source.BigQuery.Permissions"></a>

若要使用 BigQuery 資料倉儲做為 中的來源 AWS SCT，請建立服務帳戶。在 Google Cloud 中，應用程式會使用服務帳戶來進行授權的 API 呼叫。服務帳戶與使用者帳戶不同。如需詳細資訊，請參閱 Google Cloud Identity and Access Management 文件中的[服務帳戶](https://cloud.google.com/iam/docs/service-accounts)。

請務必將下列角色授予您的服務帳戶：
+ `BigQuery Admin`
+ `Storage Admin`

此`BigQuery Admin`角色提供管理專案內所有資源的許可。 AWS SCT 使用此角色載入遷移專案中的 BigQuery 中繼資料。

`Storage Admin` 角色會授予資料物件和儲存貯體的完整控制權。您可以在 下找到此角色`Cloud Storage`。 AWS SCT 使用此角色從 BigQuery 擷取您的資料，然後將其載入 Amazon Redshift。

**建立服務帳戶金鑰檔案**

1. 登入 Google Cloud 管理主控台，網址為 https：//[https://console.cloud.google.com/](https://console.cloud.google.com/)。

1. 在 [BigQuery API](https://console.cloud.google.com/apis/library/bigquery.googleapis.com) 頁面上，選擇**啟用**。如果您看到**已啟用 API**，請略過此步驟。

1. 在[服務帳戶](https://console.cloud.google.com/iam-admin/serviceaccounts)頁面上，選擇您的專案，然後選擇**建立服務帳戶**。

1. 在**服務帳戶詳細資訊**頁面上，輸入**服務帳戶名稱**的描述性值。選擇**建立並繼續**。**授予此服務帳戶對專案頁面的存取權**隨即開啟。

1. 針對**選取角色**，選擇 **BigQuery**，然後選擇 **BigQuery Admin**。

1. 選擇**新增另一個角色**。針對**選取角色**，選擇**雲端儲存**，然後選擇**儲存管理員**。

1. 選擇**繼續**，然後選擇**完成**。

1. 在[服務帳戶](https://console.cloud.google.com/iam-admin/serviceaccounts)頁面上，選擇您建立的服務帳戶。

1. 選擇**金鑰**，然後選擇為新增**金鑰建立新**金鑰。 ****

1. 選擇 **JSON**，然後選擇**建立**。選擇資料夾以儲存您的私有金鑰，或選取預設資料夾以在瀏覽器中下載。

若要從 BigQuery 資料倉儲擷取資料， AWS SCT 請使用 Google Cloud Storage 儲存貯體資料夾。在開始資料遷移之前建立此儲存貯體。在**建立本機任務**對話方塊中，輸入 Google Cloud Storage 儲存貯體資料夾的路徑。如需詳細資訊，請參閱[建立、執行和監控 AWS SCT 任務](agents.md#agents.Tasks)。

## 連接至 BigQuery 做為來源
<a name="CHAP_Source.BigQuery.Connecting"></a>

使用下列程序，透過 連線至來源 BigQuery 專案 AWS Schema Conversion Tool。

**連線至 BigQuery 來源資料倉儲**

1. 在 中 AWS Schema Conversion Tool，選擇**新增來源**。

1. 選擇 **BigQuery**，然後選擇**下一步**。

   新增**來源**對話方塊隨即出現。

1. 針對**連線名稱**，輸入 BigQuery 專案的名稱。 會在左側面板的樹狀目錄中 AWS SCT 顯示此名稱。

1. 針對**金鑰路徑**，輸入服務帳戶金鑰檔案的路徑。如需建立此檔案的詳細資訊，請參閱 [作為來源的 BigQuery 權限](#CHAP_Source.BigQuery.Permissions)。

1. 選擇**測試連線**，以確認 AWS SCT 可以連線至您的來源 BigQuery 專案。

1. 選擇**連線**以連線至來源 BigQuery 專案。

## 使用 BigQuery 做為 來源的限制 AWS SCT
<a name="CHAP_Source.BigQuery.Limitations"></a>

使用 BigQuery 做為 來源時，適用下列限制 AWS SCT：
+ AWS SCT 不支援在分析函數中轉換子查詢。
+ 您無法使用 AWS SCT 轉換 BigQuery `SELECT AS STRUCT`和 `SELECT AS VALUE` 陳述式。
+ AWS SCT 不支援轉換下列類型的函數：
  + 大約彙總
  + 位元
  + 除錯
  + 聯合查詢
  + 地理
  + 雜湊
  + 數學
  + 淨值
  + 統計彙總
  + UUID
+ AWS SCT 提供有限的字串函數轉換支援。
+ AWS SCT 不支援轉換`UNNEST`運算子。
+ 您無法在 中轉換關聯的聯結操作 AWS SCT。
+ AWS SCT 不支援轉換 `QUALIFY`、`LIMIT`、 `WINDOW`和 `OFFSET`子句。
+ 您無法使用 AWS SCT 來轉換遞迴通用資料表表達式。
+ AWS SCT 不支援在 `VALUES`子句內使用子查詢轉換`INSERT`陳述式。
+ AWS SCT 不支援轉換巢狀欄位和重複記錄的`UPDATE`陳述式。
+ 您無法使用 AWS SCT 來轉換 `STRUCT`和 `ARRAY` 資料類型。

## BigQuery 至 Amazon Redshift 轉換設定
<a name="CHAP_Source.BigQuery.ConversionSettings"></a>

若要編輯 BigQuery 至 Amazon Redshift 轉換設定，請選擇 中的**設定** AWS SCT，然後選擇**轉換設定**。從上方清單中選擇 **Google BigQuery**，然後選擇 **Google BigQuery – Amazon Redshift**。 AWS SCT 會顯示 BigQuery 到 Amazon Redshift 轉換的所有可用設定。

中的 BigQuery 至 Amazon Redshift 轉換設定 AWS SCT 包含下列項目的選項：
+ 限制轉換程式碼中具有動作項目的註解數量。

  針對**所選嚴重性及更高之動作項目在轉換後的程式碼中新增註解**，請選擇動作項目的嚴重性。 會在轉換後的程式碼中 AWS SCT 新增所選嚴重性及更高之動作項目的註解。

  例如，若要將已轉換程式碼中的註解數量降到最低，請選擇**僅限錯誤**。若要在已轉換的程式碼中包含所有動作項目的註解，請選擇**所有訊息**。
+ 設定 AWS SCT 可套用至目標 Amazon Redshift 叢集的資料表數量上限。

  針對**目標 Amazon Redshift 叢集的資料表數目上限**，選擇 AWS SCT 可套用至 Amazon Redshift 叢集的資料表數目。

  Amazon Redshift 的配額會限制不同叢集節點類型的使用資料表。如果您選擇**自動**， 會根據節點類型 AWS SCT ，決定要套用至目標 Amazon Redshift 叢集的資料表數目。或者，手動選擇 值。如需詳細資訊，請參閱《Amazon Redshift 管理指南》**中的 [Amazon Redshift 中的配額和限制](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)。

  AWS SCT 會轉換您的所有來源資料表，即使這超過 Amazon Redshift 叢集可以存放的數量。 會將轉換後的程式碼 AWS SCT 存放在您的專案中，而不會將其套用至目標資料庫。如果您在套用轉換後的程式碼時達到資料表的 Amazon Redshift 叢集配額，則 AWS SCT 會顯示警告訊息。此外， 會將資料表 AWS SCT 套用至您的目標 Amazon Redshift 叢集，直到資料表數量達到限制為止。
+ 將壓縮套用至 Amazon Redshift 資料表資料欄。若要這樣做，請選取**使用壓縮編碼**。

  AWS SCT 使用預設 Amazon Redshift 演算法自動將壓縮編碼指派給資料欄。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[壓縮編碼](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)。

  根據預設，Amazon Redshift 不會將壓縮套用至定義為排序和分佈索引鍵的資料欄。您可以變更此行為，並將壓縮套用至這些資料欄。若要這樣做，請選取**使用 KEY 資料欄的壓縮編碼**。只有在選取**使用壓縮編碼**選項時，才能選取此選項。

## BigQuery 到 Amazon Redshift 轉換最佳化設定
<a name="CHAP_Source.BigQuery.ConversionOptimizationSettings"></a>

若要編輯 BigQuery 至 Amazon Redshift 轉換最佳化設定，請選擇**設定** AWS SCT，然後選擇**轉換設定**。從上方清單中選擇 **Google BigQuery**，然後選擇 **Google BigQuery – Amazon Redshift**。在左側窗格中，選擇**最佳化策略**。 AWS SCT 顯示 BigQuery 到 Amazon Redshift 轉換的轉換最佳化設定。

中的 BigQuery 至 Amazon Redshift 轉換最佳化設定 AWS SCT 包含下列項目的選項：
+ 使用自動資料表最佳化。若要這樣做，請選取**使用 Amazon Redshift 自動資料表調校**。

  自動資料表最佳化是 Amazon Redshift 中的自我調校程序，可自動最佳化資料表的設計。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[使用自動資料表最佳化](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html)。

  若要僅依賴自動資料表最佳化，請針對**初始金鑰選擇策略**選擇**無**。
+ 使用策略選擇排序和分佈索引鍵。

  您可以使用 Amazon Redshift 中繼資料、統計資訊或這兩個選項來選擇排序和分佈索引鍵。針對**最佳化****策略索引標籤上的初始金鑰選擇**策略，選擇下列其中一個選項：
  + 使用中繼資料，忽略統計資訊
  + 忽略中繼資料，使用統計資訊
  + 使用中繼資料和統計資訊

  根據您選擇的選項，您可以選擇最佳化策略。然後，為每個策略輸入值 (0–100)。這些值會定義每個策略的權重。使用這些權重值， AWS SCT 定義每個規則如何影響分佈和排序索引鍵的選擇。預設值是以 AWS 遷移最佳實務為基礎。

  您可以為**尋找小型資料表策略定義小型資料表**的大小。對於**最小資料表資料列計數**和**最大資料表資料列計數**，輸入資料表中的最小和最大資料列數，將其定義為小型資料表。 會將`ALL`分佈樣式 AWS SCT 套用至小型資料表。在這種情況下，整個資料表的副本會分發給每個節點。
+ 設定策略詳細資訊。

  除了定義每個最佳化策略的權重之外，您還可以設定最佳化設定。若要這麼做，請選擇**轉換最佳化**。
  + 針對**排序索引鍵資料欄限制**，輸入排序索引鍵中的資料欄數目上限。
  + 對於**偏斜閾值**，輸入資料欄偏斜值的百分比 (0–100)。 AWS SCT 排除分佈索引鍵候選項目清單中的偏斜值大於閾值的資料欄。 將資料欄偏斜值 AWS SCT 定義為最常出現之值與記錄總數的百分比比率。
  + 對於**查詢歷史記錄表中的前 N 個查詢**，輸入要分析之最常用查詢的數目 (1–100)。
  + 針對**選取統計資料使用者**，選擇您要分析查詢統計資料的資料庫使用者。

  此外，在**最佳化策略**索引標籤上，您可以定義尋找小型資料表策略的**小型資料表**大小。針對**最小資料表資料列計數**和**最大資料表資料列計數**，輸入資料表中的最小和最大資料列數，將其視為小型資料表。 會將`ALL`分佈樣式 AWS SCT 套用至小型資料表。在這種情況下，整個資料表的副本會分發給每個節點。