Consultar com uso da sintaxe de consulta de UDFs - Amazon Athena

Consultar com uso da sintaxe de consulta de UDFs

A cláusula USING EXTERNAL FUNCTION especifica uma UDF ou várias UDFs que podem ser referenciadas por uma instrução SELECT subsequente na consulta. Você precisa do nome do método da UDF e do nome da função do Lambda que hospeda a UDF. No lugar do nome da função do Lambda, você pode usar o ARN do Lambda. Em cenários entre contas, o ARN do Lambda é obrigatório.

Resumo

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)] [...]

Parâmetros

USING EXTERNAL FUNCTION UDF_name(variable1 data_type[, variable2 data_type][,...])

UDF_name especifica o nome da UDF, que deve corresponder a um método Java com a função do Lambda referenciada. Cada variable data_type especifica uma variável nomeada e o tipo de dados correspondente que a UDF aceita como entrada. O data_type deve ser um dos tipos de dados do Athena permitidos listados na tabela a seguir e mapear para o tipo de dados Java correspondente.

Tipo de dados do Athena Tipo de dados Java

TIMESTAMP

java.time.LocalDateTime (UTC)

DATA

java.time.LocalDate (UTC)

TINYINT

java.lang.Byte

SMALLINT

java.lang.Short

REAL

java.lang.Float

DOUBLE

java.lang.Double

DECIMAL (veja a nota 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 tipo_dados

O data_type especifica o tipo de dados SQL que a UDF retorna como saída. Os tipos de dados do Athena listados na tabela acima são permitidos. Para o tipo de dados DECIMAL, use a sintaxe RETURNS DECIMAL(precision, scale) em que precision e scale são inteiros.

LAMBDA 'lambda_function'

lambda_function especifica o nome da função do Lambda que será invocada ao executar a UDF.

SELECT [...] UDF_name(expression) [...]

A consulta SELECT que passa os valores para a UDF e retorna um resultado. UDF_name especifica a UDF que será usada, seguida de uma expressão que é avaliado para passar os valores. Os valores que são passados e retornados devem coincidir com os tipos de dados correspondentes especificados para a UDF na cláusula USING EXTERNAL FUNCTION.

Exemplos

Para ver exemplos de consultas baseadas no código AthenaUDFHandler.java no GitHub, consulte a página Amazon Athena UDF Connector (Conector de UDF do Amazon Athena).