Eseguire query utilizzando la sintassi query UDF
La clausola USING EXTERNAL FUNCTION specifica una o più funzioni definite dall'utente a cui è possibile fare riferimento da un'istruzione SELECT successiva nella query. È necessario il nome del metodo per la funzione definita dall'utente e il nome della funzione Lambda che ospita la funzione definita dall'utente. Al posto del nome della funzione Lambda, puoi utilizzare l'ARN Lambda. Negli scenari con più account, è necessario l'utilizzo dell'ARN Lambda.
Riepilogo
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)] [...]
Parametri
- UTILIZZO DELLA FUNZIONE ESTERNA
UDF_name(variable1data_type[,variable2data_type][,...]) -
UDF_namespecifica il nome della funzione definita dall'utente, che deve corrispondere a un metodo Java all'interno della funzione Lambda di riferimento. Ognivariabile data_typespecifica una variabile denominata e il tipo di dati corrispondente, che l'UDF accetta come input.data_typedeve essere uno dei tipi di dati Athena supportati nella seguente tabella e mappato al tipo di dati Java corrispondente.Tipo di dati Athena Tipo di dati 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 (vd. 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_typespecifica il tipo di dati SQL restituito dall'UDF come output. I tipi di dati Athena elencati nella tabella precedente sono supportati. Per il tipo di datiDECIMAL, utilizzare la sintassiRETURNS DECIMAL(doveprecision,scale)precisionescalesono numeri interi. - LAMBDA '
lambda_function' -
lambda_functionspecifica il nome della funzione da richiamare durante l'esecuzione della funzione Lambda definita dall'utente. - SELEZIONA [...]
UDF_name(expression) [...] -
La query
SELECTche trasmette i valori all'UDF e restituisce un risultato.UDF_namespecifica l'UDF da utilizzare, seguito da un'espressioneche viene valutata per trasmettere i valori. I valori passati e restituiti devono corrispondere ai tipi di dati corrispondenti specificati per la funzione definita dall'utente nella clausolaUSING EXTERNAL FUNCTION.
Esempi
Per query di esempio basate sul codice AthenaUDFHandler.java