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(variable1data_type[,variable2data_type][,...]) -
UDF_nameespecifica o nome da UDF, que deve corresponder a um método Java com a função do Lambda referenciada. Cadavariable data_typeespecifica uma variável nomeada e o tipo de dados correspondente que a UDF aceita como entrada. Odata_typedeve 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)
DATE
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_typeespecifica 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)precisionescalesão inteiros. - LAMBDA '
lambda_function' -
lambda_functionespecifica o nome da função do Lambda que será invocada ao executar a UDF. - SELECT [...]
UDF_name(expression) [...] -
A consulta
SELECTque passa os valores para a UDF e retorna um resultado.UDF_nameespecifica a UDF que será usada, seguida de umaexpressãoque é 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