

# 用户定义的函数 API
<a name="aws-glue-api-catalog-functions"></a>

用户定义的函数 API 介绍用于处理函数的 Amazon Glue 数据类型和操作。

## 数据类型
<a name="aws-glue-api-catalog-functions-objects"></a>
+ [UserDefinedFunction 结构](#aws-glue-api-catalog-functions-UserDefinedFunction)
+ [UserDefinedFunctionInput 结构](#aws-glue-api-catalog-functions-UserDefinedFunctionInput)

## UserDefinedFunction 结构
<a name="aws-glue-api-catalog-functions-UserDefinedFunction"></a>

表示与 Hive 用户定义函数 (`UDF`) 定义等效的函数。

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

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

  包含函数的目录数据库的名称。
+ `ClassName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  包含函数代码的 Java 类。
+ `OwnerName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  参数的所有者。
+ `OwnerType` – UTF-8 字符串（有效值：`USER` \$1 `ROLE` \$1 `GROUP`）。

  所有者类型。
+ `CreateTime` – 时间戳。

  创建函数的时间。
+ `ResourceUris` – [ResourceUri](aws-glue-api-common.md#aws-glue-api-common-ResourceUri) 对象数组，不超过 1000 个结构。

  函数的资源 URI。
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在其中创建函数的数据目录的 ID。

## UserDefinedFunctionInput 结构
<a name="aws-glue-api-catalog-functions-UserDefinedFunctionInput"></a>

用于创建或更新用户定义函数的结构。

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

  函数的名称。
+ `ClassName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  包含函数代码的 Java 类。
+ `OwnerName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  参数的所有者。
+ `OwnerType` – UTF-8 字符串（有效值：`USER` \$1 `ROLE` \$1 `GROUP`）。

  所有者类型。
+ `ResourceUris` – [ResourceUri](aws-glue-api-common.md#aws-glue-api-common-ResourceUri) 对象数组，不超过 1000 个结构。

  函数的资源 URI。

## 操作
<a name="aws-glue-api-catalog-functions-actions"></a>
+ [CreateUserDefinedFunction 操作（Python：create\$1user\$1defined\$1function）](#aws-glue-api-catalog-functions-CreateUserDefinedFunction)
+ [UpdateUserDefinedFunction 操作（Python：update\$1user\$1defined\$1function）](#aws-glue-api-catalog-functions-UpdateUserDefinedFunction)
+ [DeleteUserDefinedFunction 操作（Python：delete\$1user\$1defined\$1function）](#aws-glue-api-catalog-functions-DeleteUserDefinedFunction)
+ [GetUserDefinedFunction 操作（Python：get\$1user\$1defined\$1function）](#aws-glue-api-catalog-functions-GetUserDefinedFunction)
+ [GetUserDefinedFunctions 操作（Python：get\$1user\$1defined\$1functions）](#aws-glue-api-catalog-functions-GetUserDefinedFunctions)

## CreateUserDefinedFunction 操作（Python：create\$1user\$1defined\$1function）
<a name="aws-glue-api-catalog-functions-CreateUserDefinedFunction"></a>

在数据目录中创建新函数定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在其中创建函数的数据目录的 ID。如果没有提供，则默认情况下使用 Amazon 账户 ID。
+ `DatabaseName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在其中创建函数的目录数据库的名称。
+ `FunctionInput` – *必填：*一个 [UserDefinedFunctionInput](#aws-glue-api-catalog-functions-UserDefinedFunctionInput) 对象。

  一个 `FunctionInput` 对象，它定义要在数据目录中创建的函数。

**响应**
+ *无响应参数。*

**错误**
+ `AlreadyExistsException`
+ `InvalidInputException`
+ `InternalServiceException`
+ `EntityNotFoundException`
+ `OperationTimeoutException`
+ `ResourceNumberLimitExceededException`
+ `GlueEncryptionException`

## UpdateUserDefinedFunction 操作（Python：update\$1user\$1defined\$1function）
<a name="aws-glue-api-catalog-functions-UpdateUserDefinedFunction"></a>

在数据目录中更新现有函数定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要更新的函数所在的数据目录的 ID。如果没有提供，则默认情况下使用 Amazon 账户 ID。
+ `DatabaseName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

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

  函数的名称。
+ `FunctionInput` – *必填：*一个 [UserDefinedFunctionInput](#aws-glue-api-catalog-functions-UserDefinedFunctionInput) 对象。

  一个 `FunctionInput` 对象，它重新定义数据目录中的函数。

**响应**
+ *无响应参数。*

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

## DeleteUserDefinedFunction 操作（Python：delete\$1user\$1defined\$1function）
<a name="aws-glue-api-catalog-functions-DeleteUserDefinedFunction"></a>

从数据目录中删除现有函数定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要删除的函数所在的数据目录的 ID。如果没有提供，则默认情况下使用 Amazon 账户 ID。
+ `DatabaseName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

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

  要删除的函数定义的名称。

**响应**
+ *无响应参数。*

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

## GetUserDefinedFunction 操作（Python：get\$1user\$1defined\$1function）
<a name="aws-glue-api-catalog-functions-GetUserDefinedFunction"></a>

从数据目录中检索指定的函数定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要检索的函数所在的数据目录的 ID。如果没有提供，则默认情况下使用 Amazon 账户 ID。
+ `DatabaseName` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

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

  函数的名称。

**响应**
+ `UserDefinedFunction` – 一个 [UserDefinedFunction](#aws-glue-api-catalog-functions-UserDefinedFunction) 对象。

  请求的函数定义。

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

## GetUserDefinedFunctions 操作（Python：get\$1user\$1defined\$1functions）
<a name="aws-glue-api-catalog-functions-GetUserDefinedFunctions"></a>

从数据目录中检索多个函数定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要检索的函数所在的数据目录的 ID。如果没有提供，则默认情况下使用 Amazon 账户 ID。
+ `DatabaseName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  函数所在的目录数据库的名称。如果未提供任何内容，则将返回来自目录中所有数据库的函数。
+ `Pattern` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  一个可选的函数名称模式字符串，用于筛选返回的函数定义。
+ `NextToken` – UTF-8 字符串。

  延续标记 (如果这是延续调用)。
+ `MaxResults` – 数字（整数），不小于 1 或大于 100。

  要在一个响应中返回的函数的最大数量。

**响应**
+ `UserDefinedFunctions` – [UserDefinedFunction](#aws-glue-api-catalog-functions-UserDefinedFunction) 对象的数组。

  请求的函数定义的列表。
+ `NextToken` – UTF-8 字符串。

  延续令牌 (如果返回函数的列表不包括最后一个请求的函数)。

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