USING EXTERNAL FUNCTION
子句指定可由查询中的后续 SELECT
语句引用的 UDF 或多个 UDF。您需要 UDF 的方法名称和托管 UDF 的 Lambda 函数的名称。您可以使用 Lambda ARN 代替 Lambda 函数名称。在跨账户场景中,需要提供 Lambda ARN。
摘要
USING EXTERNAL FUNCTION UDF_name
(variable1
data_type
[, variable2
data_type
][,...])
RETURNS data_type
LAMBDA 'lambda_function_name_or_ARN
'
[, EXTERNAL FUNCTION UDF_name2
(variable1
data_type
[, variable2
data_type
][,...])
RETURNS data_type
LAMBDA 'lambda_function_name_or_ARN
'[,...]]
SELECT [...] UDF_name
(expression
) [, UDF_name2
(expression
)] [...]
参数
- USING EXTERNAL FUNCTION
UDF_name
(variable1
data_type
[,variable2
data_type
][,...]) -
UDF_name
指定 UDF 的名称,该名称必须与引用的 Lambda 函数中的 Java 方法对应。每个variable data_type
指定一个命名变量,且其相应的数据类型应可为 UDF 接受作为输入。data_type
必须是下表中列出的受支持 Athena 数据类型之一,并映射到相应的 Java 数据类型。Athena 数据类型 Java 数据类型 TIMESTAMP
java.time.LocalDateTime (UTC)
DATE
java.time.LocalDate (UTC)
TINYINT
java.lang.Byte
SMALLINT
java.lang.Short
REAL
java.lang.Float
DOUBLE
java.lang.Double
DECIMAL(请参阅
RETURNS
注释)java.math.BigDecimal
BIGINT
java.lang.Long
INTEGER
java.lang.Int
VARCHAR
java.lang.String
VARBINARY
byte[]
BOOLEAN
java.lang.Boolean
ARRAY
java.util.List
ROW
java.util.Map<String, Object>
- RETURNS
data_type
-
data_type
指定 UDF 作为输出返回的 SQL 数据类型。上表中列出的 Athena 数据类型均受支持。对于DECIMAL
数据类型,请使用语法RETURNS DECIMAL(
,其中precision
,scale
)precision
(精度)和scale
(小数位数)是整数。 - LAMBDA '
lambda_function
' -
lambda_function
指定运行 UDF 时要调用的 Lambda 函数的名称。 - SELECT [...]
UDF_name
(expression
) [...] -
SELECT
查询会将值传递给 UDF 并返回结果。UDF_name
指定要使用的 UDF,后跟一个表达式
,该表达式将进行估算以传递值。传递和返回的值必须与USING EXTERNAL FUNCTION
子句中为 UDF 指定的相应数据类型匹配。
示例
如需获取 GitHub 上基于AthenaUDFHandler.java