Consulta mediante la sintaxis de la consulta de UDF - Amazon Athena

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. Cada variable data_type especifica una variable con nombre con su tipo de datos correspondiente, que la UDF acepta como entrada. El data_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 datos DECIMAL, utilice la sintaxis RETURNS DECIMAL(precision, scale) donde precision y scale 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 una expression (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áusula USING EXTERNAL FUNCTION.

Ejemplos

Para ver ejemplos de consultas basadas en el código AthenaUDFHandler.java en GitHub, consulte la página Conector UDF de Amazon Athena.