

# 自动生成 ETL 脚本 API
<a name="aws-glue-api-etl-script-generation"></a>

ETL 脚本生成 API 介绍用于在 AWS Glue 中生成 ETL 脚本的数据类型和 API。

## 数据类型
<a name="aws-glue-api-etl-script-generation-objects"></a>
+ [CodeGenNode 结构](#aws-glue-api-etl-script-generation-CodeGenNode)
+ [CodeGenNodeArg 结构](#aws-glue-api-etl-script-generation-CodeGenNodeArg)
+ [CodeGenEdge 结构](#aws-glue-api-etl-script-generation-CodeGenEdge)
+ [Location 结构](#aws-glue-api-etl-script-generation-Location)
+ [CatalogEntry 结构](#aws-glue-api-etl-script-generation-CatalogEntry)
+ [MappingEntry 结构](#aws-glue-api-etl-script-generation-MappingEntry)

## CodeGenNode 结构
<a name="aws-glue-api-etl-script-generation-CodeGenNode"></a>

表示有向无环图 (DAG) 中的节点

**字段**
+ `Id` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Identifier string pattern](aws-glue-api-common.md#aws-glue-api-regex-id) 匹配。

  节点图中唯一的节点标识符。
+ `NodeType` – *必填：*UTF-8 字符串。

  该节点的类型。
+ `Args` – *必填：*[CodeGenNodeArg](#aws-glue-api-etl-script-generation-CodeGenNodeArg) 对象的数组，不超过 50 个结构。

  节点的属性，采用名称-值对形式。
+ `LineNumber` – 数字（整数）。

  节点的行号。

## CodeGenNodeArg 结构
<a name="aws-glue-api-etl-script-generation-CodeGenNodeArg"></a>

节点的参数或属性。

**字段**
+ `Name` – *必填：*UTF-8 字符串。

  参数或属性的名称。
+ `Value` – *必填：*UTF-8 字符串。

  参数或属性的值。
+ `Param` – 布尔值。

  如果值用作参数，则为 True。

## CodeGenEdge 结构
<a name="aws-glue-api-etl-script-generation-CodeGenEdge"></a>

表示有向无环图 (DAG) 中的方向边缘。

**字段**
+ `Source` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Identifier string pattern](aws-glue-api-common.md#aws-glue-api-regex-id) 匹配。

  边缘开始的节点的 ID。
+ `Target` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Identifier string pattern](aws-glue-api-common.md#aws-glue-api-regex-id) 匹配。

  边缘结束的节点的 ID。
+ `TargetParameter` – UTF-8 字符串。

  边缘的目标。

## Location 结构
<a name="aws-glue-api-etl-script-generation-Location"></a>

资源的位置。

**字段**
+ `Jdbc` – [CodeGenNodeArg](#aws-glue-api-etl-script-generation-CodeGenNodeArg) 对象的数组，不超过 50 个结构。

  JDBC 位置。
+ `S3` – [CodeGenNodeArg](#aws-glue-api-etl-script-generation-CodeGenNodeArg) 对象的数组，不超过 50 个结构。

  Amazon Simple Storage Service (Amazon S3) 位置
+ `DynamoDB` – [CodeGenNodeArg](#aws-glue-api-etl-script-generation-CodeGenNodeArg) 对象的数组，不超过 50 个结构。

  Amazon DynamoDB 表位置。

## CatalogEntry 结构
<a name="aws-glue-api-etl-script-generation-CatalogEntry"></a>

在 AWS Glue Data Catalog 中指定表定义。

**字段**
+ `DatabaseName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  表元数据所在的数据库。
+ `TableName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  相关表的名称。

## MappingEntry 结构
<a name="aws-glue-api-etl-script-generation-MappingEntry"></a>

定义映射。

**字段**
+ `SourceTable` – UTF-8 字符串。

  源表的名称。
+ `SourcePath` – UTF-8 字符串。

   源路径。
+ `SourceType` – UTF-8 字符串。

  源类型
+ `TargetTable` – UTF-8 字符串。

  目标表。
+ `TargetPath` – UTF-8 字符串。

  目标路径。
+ `TargetType` – UTF-8 字符串。

  目标类型。

## 操作
<a name="aws-glue-api-etl-script-generation-actions"></a>
+ [CreateScript 操作（Python：create\$1script）](#aws-glue-api-etl-script-generation-CreateScript)
+ [GetDataflowGraph 操作（Python：get\$1dataflow\$1graph）](#aws-glue-api-etl-script-generation-GetDataflowGraph)
+ [GetMapping 操作（Python：get\$1mapping）](#aws-glue-api-etl-script-generation-GetMapping)
+ [GetPlan 操作（Python：get\$1plan）](#aws-glue-api-etl-script-generation-GetPlan)

## CreateScript 操作（Python：create\$1script）
<a name="aws-glue-api-etl-script-generation-CreateScript"></a>

将有向无环图 (DAG) 转换为代码。

**请求**
+ `DagNodes` – [CodeGenNode](#aws-glue-api-etl-script-generation-CodeGenNode) 对象的数组。

  DAG 中的节点的列表。
+ `DagEdges` – [CodeGenEdge](#aws-glue-api-etl-script-generation-CodeGenEdge) 对象的数组。

  DAG 中的边缘的列表。
+ `Language` – UTF-8 字符串（有效值：`PYTHON` \$1 `SCALA`）。

  从 DAG 生成的代码的编程语言。

**响应**
+ `PythonScript` – UTF-8 字符串。

  从 DAG 生成的 Python 脚本。
+ `ScalaCode` – UTF-8 字符串。

  从 DAG 生成的 Scala 代码。

**错误**
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`

## GetDataflowGraph 操作（Python：get\$1dataflow\$1graph）
<a name="aws-glue-api-etl-script-generation-GetDataflowGraph"></a>

将 Python 脚本转换为有向无环图 (DAG)。

**请求**
+ `PythonScript` – UTF-8 字符串。

  要转换的 Python 脚本。

**响应**
+ `DagNodes` – [CodeGenNode](#aws-glue-api-etl-script-generation-CodeGenNode) 对象的数组。

  生成的 DAG 中的节点的列表。
+ `DagEdges` – [CodeGenEdge](#aws-glue-api-etl-script-generation-CodeGenEdge) 对象的数组。

  生成的 DAG 中的边缘的列表。

**错误**
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`

## GetMapping 操作（Python：get\$1mapping）
<a name="aws-glue-api-etl-script-generation-GetMapping"></a>

创建映射。

**请求**
+ `Source` – *必填：*一个 [CatalogEntry](#aws-glue-api-etl-script-generation-CatalogEntry) 对象。

  指定源表。
+ `Sinks` – [CatalogEntry](#aws-glue-api-etl-script-generation-CatalogEntry) 对象的数组。

  目标表的列表。
+ `Location` – 一个 [位置](#aws-glue-api-etl-script-generation-Location) 对象。

  映射的参数。

**响应**
+ `Mapping` – *必填：*[MappingEntry](#aws-glue-api-etl-script-generation-MappingEntry) 对象的数组。

  指定目标的映射的列表。

**错误**
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `EntityNotFoundException`

## GetPlan 操作（Python：get\$1plan）
<a name="aws-glue-api-etl-script-generation-GetPlan"></a>

获取代码以执行指定的映射。

**请求**
+ `Mapping` – *必填：*[MappingEntry](#aws-glue-api-etl-script-generation-MappingEntry) 对象的数组。

  从源表到目标表的映射的列表。
+ `Source` – *必填：*一个 [CatalogEntry](#aws-glue-api-etl-script-generation-CatalogEntry) 对象。

  源表。
+ `Sinks` – [CatalogEntry](#aws-glue-api-etl-script-generation-CatalogEntry) 对象的数组。

  目标表。
+ `Location` – 一个 [位置](#aws-glue-api-etl-script-generation-Location) 对象。

  映射的参数。
+ `Language` – UTF-8 字符串（有效值：`PYTHON` \$1 `SCALA`）。

  用于执行映射的代码的编程语言。
+ `AdditionalPlanOptionsMap` – 键值对的映射数组。

  每个键是一个 UTF-8 字符串。

  每个值是一个 UTF-8 字符串。

  用于保存其他可选键值参数的映射。

  目前支持以下键值对：
  + `inferSchema` – 指定是否为 AWS Glue 任务生成的默认脚本将 `inferSchema` 设置为 true 或 false。例如，要将 `inferSchema` 设置为 true，则传递以下键值对：

    `--additional-plan-options-map '{"inferSchema":"true"}'`

**响应**
+ `PythonScript` – UTF-8 字符串。

  用于执行映射的 Python 脚本。
+ `ScalaCode` – UTF-8 字符串。

  用于执行映射的 Scala 代码。

**错误**
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`