选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 UDF 查询语法进行查询

聚焦模式

本页内容

使用 UDF 查询语法进行查询 - Amazon Athena

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(variable1data_type[, variable2data_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 代码的示例查询,请参阅 GitHub 的 Amazon Athena UDF connector(Amazon Athena UDF 连接器)页面。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。