

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# BigQuery 使用以下方式连接谷歌 AWS Schema Conversion Tool
<a name="CHAP_Source.BigQuery"></a>

您可以使用 AWS SCT 将架构、代码对象和应用程序代码从 Amazon Redshift 转换为 Amazon Reds BigQuery hift。

## BigQuery 作为来源的权限
<a name="CHAP_Source.BigQuery.Permissions"></a>

要在中使用 BigQuery 数据仓库作为源 AWS SCT，请创建一个服务帐号。在 Google Cloud 中，应用程序使用服务账户进行授权的 API 调用。服务账户与用户账户不同。有关更多信息，请参阅《Google Cloud 身份和访问权限管理》文档中的[服务账号](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://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 管理员**”。

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. 选择 **Conn** ect 以连接到您的源 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 不支持以下类型的函数的转换：
  + 近似聚合
  + Bit
  + 调试
  + 联合查询
  + 地理位置
  + 哈希
  + 数学
  + 净值
  + 统计聚合
  + UUID
+ AWS SCT 为字符串函数的转换提供了有限的支持。
+ AWS SCT 不支持`UNNEST`运算符的转换。
+ 无法在 AWS SCT中转换相关的联接操作。
+ AWS SCT 不支持`QUALIFY`、`WINDOW``LIMIT`、和`OFFSET`子句的转换。
+ 不能使用 AWS SCT 来转换递归公用表表达式。
+ AWS SCT 不支持转换子`INSERT`句内带有子查询的语`VALUES`句。
+ AWS SCT 不支持嵌套字段和重复记录的`UPDATE`语句转换。
+ 您不能使用 AWS SCT 来转换`STRUCT`和`ARRAY`数据类型。

## BigQuery 到亚马逊 Redshift 转换设置
<a name="CHAP_Source.BigQuery.ConversionSettings"></a>

要编辑 BigQuery 到 Amazon Redshift 转换设置，请在中选择 **“设置”** AWS SCT，然后选择 “**转换**设置”。从上方的列表中选择**谷歌 BigQuery，然后选择谷歌 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 到亚马逊 Redshift 转化优化设置
<a name="CHAP_Source.BigQuery.ConversionOptimizationSettings"></a>

要编辑 BigQuery 到 Amazon Redshift 转化优化设置，请在中选择 **“设置”** AWS SCT，然后选择 “**转化**设置”。从上方的列表中选择**谷歌 BigQuery，然后选择谷歌 BigQuery ** **— Amazon Redshift**。在左侧窗格中，选择**优化策略**。 AWS SCT 显示转为 BigQuery 亚马逊 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 迁移最佳实践。

  您可以为**查找小型表**策略定义小型表的大小。在 “**最小表格行数**” 和 “**最大表格行数**” 中，输入表格中最小和最大行数以将其定义为小表。 AWS SCT 将`ALL`分配方式应用于小表。在这种情况下，向每个节点分配整个表的副本。
+ 配置策略详细信息。

  除了定义每种优化策略的权重外，您还可以配置优化设置。为此，请选择**转换优化**。
  + 对于**排序键列数限制**，在排序键中输入最大列数。
  + 在**倾斜阈值**中，输入列偏斜值的百分比 (0—100)。 AWS SCT 从分布键的候选列表中排除倾斜值大于阈值的列。 AWS SCT 将列的偏斜值定义为最常见值的出现次数与记录总数的百分比比率。
  + 对于**查询历史表中的前 N 个查询**，请输入要分析的最常用查询的数量（1–100）。
  + 在**选择统计数据用户**中，选择要分析查询统计数据的数据库用户。

  此外，在**优化策略**选项卡上，您可以为**查找小型表**策略定义小型表的大小。在 “**最小表格行数**” 和 “**最大表格行数**” 中，输入表格中最小和最大行数，将其视为一个小表。 AWS SCT 将`ALL`分配方式应用于小表。在这种情况下，向每个节点分配整个表的副本。