Eseguire query utilizzando la sintassi query UDF - Amazon Athena

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(variable1 data_type[, variable2 data_type][,...])

UDF_name specifica il nome della funzione definita dall'utente, che deve corrispondere a un metodo Java all'interno della funzione Lambda di riferimento. Ogni variabile data_type specifica una variabile denominata e il tipo di dati corrispondente, che l'UDF accetta come input. data_type deve 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_type specifica 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 dati DECIMAL, utilizzare la sintassi RETURNS DECIMAL(precision, scale) dove precision e scale sono numeri interi.

LAMBDA 'lambda_function'

lambda_function specifica il nome della funzione da richiamare durante l'esecuzione della funzione Lambda definita dall'utente.

SELEZIONA [...] UDF_name(expression) [...]

La query SELECT che trasmette i valori all'UDF e restituisce un risultato. UDF_name specifica l'UDF da utilizzare, seguito da un'espressione che 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 clausola USING EXTERNAL FUNCTION.

Esempi

Per query di esempio basate sul codice AthenaUDFHandler.java su GitHub, consulta la pagina GitHub Connettore UDF di Amazon Athena.