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. Cadavariable data_type
especifica uma variável nomeada e o tipo de dados correspondente que a UDF aceita como entrada. Odata_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 dadosDECIMAL
, use a sintaxeRETURNS DECIMAL(
em queprecision
,scale
)precision
escale
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 umaexpressã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áusulaUSING EXTERNAL FUNCTION
.
Exemplos
Para ver exemplos de consultas baseadas no código AthenaUDFHandler.java