Consulta mediante la sintaxis de la consulta de UDF
La cláusula USING EXTERNAL FUNCTION
especifica una UDF o varias UDF a las que se puede hacer referencia mediante una instrucción SELECT
posterior en la consulta. Necesita el nombre del método para la UDF y el nombre de la función de Lambda que aloja la UDF. En lugar del nombre de la función de Lambda, puede utilizar el ARN de Lambda. En escenarios de varias cuentas, se requiere el ARN de Lambda.
Sinopsis
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 el nombre de la UDF, que debe corresponderse con un método Java dentro de la función de Lambda de referencia. Cadavariable data_type
especifica una variable con nombre con su tipo de datos correspondiente, que la UDF acepta como entrada. Eldata_type
debe ser uno de los tipos de datos de Athena admitidos que aparecen en la siguiente tabla y asignarse al tipo de datos Java correspondiente.Tipo de datos de Athena Tipo de datos Java MARCA DE TIEMPO
java.time.LocalDateTime (UTC)
FECHA
java.time.LocalDate (UTC)
TINYINT
java.lang.Byte
SMALLINT
java.lang.Short
REAL
java.lang.Float
DOBLE
java.lang.Double
DECIMAL (consulte la 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
data_type
-
data_type
especifica el tipo de datos SQL que la UDF devuelve a la consulta como salida. Los tipos de datos de Athena enumerados en la tabla anterior son compatibles. Para el tipo de datosDECIMAL
, utilice la sintaxisRETURNS DECIMAL(
dondeprecision
,scale
)precision
yscale
son enteros. - LAMBDA '
lambda_function
' -
lambda_function
especifica el nombre de la función de Lambda que se va a invocar cuando se ejecuta la UDF. - SELECT [...]
UDF_name
(expression
) [...] -
La consulta
SELECT
que pasa valores a la UDF y devuelve un resultado.UDF_name
especifica la UDF que se va a utilizar, seguida de unaexpression
(expresión) que se evalúa para pasar valores. Los valores que se pasan y se devuelven deben coincidir con los tipos de datos correspondientes especificados para la UDF en la cláusulaUSING EXTERNAL FUNCTION
.
Ejemplos
Para ver ejemplos de consultas basadas en el código AthenaUDFHandler.java