

# 使用 SQL 查询转换数据
<a name="transforms-sql"></a>

您可以使用 **SQL** 转换以 SQL 查询形式编写您自己的转换。

SQL 转换节点可以有多个数据集作为输入，但只能生成单个数据集作为输出。包含文本字段，您可以在其中输入 Apache SparkSQL 查询。您可以为用作输入的每个数据集分配别名，以帮助简单地执行 SQL 查询。有关 SQL 语法的更多信息，请参阅 [Spark SQL 文档](https://spark.apache.org/docs/latest/sql-ref.html)。

**注意**  
如果您对 VPC 中的数据源使用 Spark SQL 转换，请将 AWS Glue VPC 终端节点添加到包含数据源的 VPC。有关配置开发终端节点的更多信息，请参阅《AWS Glue 开发人员指南》**中的[添加开发终端节点](https://docs.aws.amazon.com/glue/latest/dg/add-dev-endpoint.html)、[针对开发终端节点设置您的环境](https://docs.aws.amazon.com/glue/latest/dg/start-development-endpoint.html)和[访问您的开发终端节点](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-elastic-ip.html)。

**在任务图中使用 SQL 转换节点**

1. （可选）在需要时将转换节点添加到任务图。对于节点类型，请选择 **Spark SQL**。
**注意**  
 如果使用数据预览会话和自定义 SQL 或自定义代码节点，则数据预览会话将按原样对整个数据集执行 SQL 或代码块。

1. 在 **Node properties (节点属性)** 选项卡上，输入任务图中节点的名称。如果尚未选择父节点，或者您希望为 SQL 转换选择多个输入，请从 **Node parents (父节点)** 列表中选择一个节点，用作转换的输入源。根据需要添加额外的父节点。

1. 选择节点详细信息窗格中的 **Transform (转换)** 选项卡。

1. SQL 查询的源数据集由您在每个节点的 **Name (名称)** 字段中指定的名称标识。如果您不想使用这些名称，或者这些名称不适合 SQL 查询，则可以将名称与每个数据集关联。控制台提供默认别名，例如 `MyDataSource`。

   例如，如果 SQL 转换节点的父节点名为 `Rename Org PK field`，您可以将名称 `org_table` 与此数据集一起使用。然后，您可以在 SQL 查询中使用此别名来代替节点名称。

1. 在标题 **Code block (代码数据块)** 下的文本输入字段中，粘贴或输入 SQL 查询。文本字段显示 SQL 语法突出显示和关键字建议。

1. 在选中 SQL 转换节点的情况下，选择 **Output schema (输出架构)** 选项卡，然后选择 **Edit (编辑)**。提供描述 SQL 查询输出字段的列和数据类型。

   使用页面的 **Output schema (输出架构)** 部分中的以下操作指定架构：
   + 要重命名列，请将光标放在列的 **Key (键)** 文本框（也称为 *field (字段)* 或者 *property key (属性键)*），然后输入新名称。
   + 要更改列的数据类型，请从下拉列表中选择该列的新数据类型。
   + 要为架构添加新的顶级列，请选择 Overflow (溢出)（![A rectangle with an ellipsis (...) in the center](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/edit-schema-actions-button.png)）按钮，然后选择 **Add root key (添加根键)**。新列将添加到架构顶部。
   + 要从架构中删除列，请选择键名称最右侧的删除图标（![An outline of a trash can](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/delete-icon-black.png)）。

1. 指定输出架构后，选择 **Apply (应用)** 保存您的更改并退出架构编辑器。如果不想保存更改，请选择 **Cancel (取消)** 以编辑架构编辑器。

1. （可选）配置节点属性和转换属性后，您可以选择节点详细信息窗格中的 **Data preview (数据预览)** 选项卡来预览已修改的数据集。当您首次为任务中的任何节点选择此选项卡时，系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关费用，并且一旦您提供 IAM 角色，则会立即开始计费。