

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

# 使用者定義的函數 API
<a name="aws-glue-api-catalog-functions"></a>

使用者定義的函數 API 說明用於使用函數的 AWS 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` \| `ROLE` \| `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)。

  函數所在的 Data Catalog 之 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` \| `ROLE` \| `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\_user\_defined\_function)](#aws-glue-api-catalog-functions-CreateUserDefinedFunction)
+ [UpdateUserDefinedFunction 動作 (Python: update\_user\_defined\_function)](#aws-glue-api-catalog-functions-UpdateUserDefinedFunction)
+ [DeleteUserDefinedFunction 動作 (Python: delete\_user\_defined\_function)](#aws-glue-api-catalog-functions-DeleteUserDefinedFunction)
+ [GetUserDefinedFunction 動作 (Python: get\_user\_defined\_function)](#aws-glue-api-catalog-functions-GetUserDefinedFunction)
+ [GetUserDefinedFunctions 動作 (Python: get\_user\_defined\_functions)](#aws-glue-api-catalog-functions-GetUserDefinedFunctions)

## CreateUserDefinedFunction 動作 (Python: create\_user\_defined\_function)
<a name="aws-glue-api-catalog-functions-CreateUserDefinedFunction"></a>

在 Data Catalog 建立新的函數定義。

**請求**
+ `CatalogId` – 目錄 ID 字串，長度不可小於 1 個位元組，也不可以超過 255 個位元組，需符合[Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine)。

  用於建立函數的 Data Catalog 之 ID。如果未提供，預設會使用 AWS 帳戶 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) 物件。

  定義在 Data Catalog 中所建立函數的 `FunctionInput` 物件。

**回應**
+ *無回應參數。*

**錯誤**
+ `AlreadyExistsException`
+ `InvalidInputException`
+ `InternalServiceException`
+ `EntityNotFoundException`
+ `OperationTimeoutException`
+ `ResourceNumberLimitExceededException`
+ `GlueEncryptionException`

## UpdateUserDefinedFunction 動作 (Python: update\_user\_defined\_function)
<a name="aws-glue-api-catalog-functions-UpdateUserDefinedFunction"></a>

更新 Data Catalog 中現有的函數定義

**請求**
+ `CatalogId` – 目錄 ID 字串，長度不可小於 1 個位元組，也不可以超過 255 個位元組，需符合[Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine)。

  要更新函數所在 Data Catalog 的 ID。如果未提供，預設會使用 AWS 帳戶 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` 物件，可在 Data Catalog 內重新定義函數。

**回應**
+ *無回應參數。*

**錯誤**
+ `EntityNotFoundException`
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `GlueEncryptionException`

## DeleteUserDefinedFunction 動作 (Python: delete\_user\_defined\_function)
<a name="aws-glue-api-catalog-functions-DeleteUserDefinedFunction"></a>

從 Data Catalog 刪除現有的函數定義

**請求**
+ `CatalogId` – 目錄 ID 字串，長度不可小於 1 個位元組，也不可以超過 255 個位元組，需符合[Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine)。

  欲刪除函數所在的 Data Catalog 之 ID。如果未提供，預設會使用 AWS 帳戶 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\_user\_defined\_function)
<a name="aws-glue-api-catalog-functions-GetUserDefinedFunction"></a>

從 Data Catalog 擷取指定的函數定義

**請求**
+ `CatalogId` – 目錄 ID 字串，長度不可小於 1 個位元組，也不可以超過 255 個位元組，需符合[Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine)。

  要擷取函數所在 Data Catalog 的 ID。如果未提供，預設會使用 AWS 帳戶 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\_user\_defined\_functions)
<a name="aws-glue-api-catalog-functions-GetUserDefinedFunctions"></a>

從 Data Catalog 擷取多函數定義。

**請求**
+ `CatalogId` – 目錄 ID 字串，長度不可小於 1 個位元組，也不可以超過 255 個位元組，需符合[Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine)。

  要擷取函數所在 Data Catalog 的 ID。如果未提供，預設會使用 AWS 帳戶 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`