

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 标量 Python UDF
<a name="udf-creating-a-scalar-udf"></a>

标量 Python UDF 纳入了当此函数被调用并返回单个值时执行的一个 Python 程序。[CREATE FUNCTION](r_CREATE_FUNCTION.md) 命令定义以下参数：
+ （可选）输入参数。每个参数均必须具有一个名称和一个数据类型。
+ 一个返回数据类型。
+ 一个可执行的 Python 程序。

Python UDF 的输入和返回数据类型可以是以下任何类型：
+  SMALLINT 
+  INTEGER 
+  BIGINT 
+  DECIMAL 
+  REAL 
+  DOUBLE PRECISION 
+  BOOLEAN 
+  CHAR 
+  VARCHAR 
+  DATE 
+  TIMESTAMP 
+  ANYELEMENT 

这些类型的别名也是有效的。有关数据类型及其别名的完整列表，请参阅[数据类型](c_Supported_data_types.md)。

当 Python UDF 使用数据类型 ANYELEMENT 时，Amazon Redshift 会根据在运行时提供的参数自动将其转换为标准数据类型。有关更多信息，请参阅 [ANYELEMENT 数据类型](udf-data-types.md#udf-anyelement-data-type)。

当 Amazon Redshift 查询调用标量 UDF 时，以下步骤将在运行时发生。

1. 函数将输入参数转换为 Python 数据类型。

   有关 Amazon Redshift 数据类型到 Python 数据类型的映射，请参阅[Python UDF 数据类型](udf-data-types.md)。

1. 函数执行 Python 程序，并传递转换后的输入参数。

1. Python 代码返回一个值。返回值的数据类型必须对应于函数定义所指定的 RETURNS 数据类型。

1. 函数将 Python 返回值转换为指定的 Amazon Redshift 数据类型，然后将该值返回到查询。

**注意**  
Python 3 不适用于 Python UDF。要获得 Python 3 对 Amazon Redshift UDF 的支持，请改用 [标量 Lambda UDF](udf-creating-a-lambda-sql-udf.md)。