Interrogation à l’aide de la syntaxe de requête UDF - Amazon Athena

Interrogation à l’aide de la syntaxe de requête UDF

La clause USING EXTERNAL FUNCTION spécifie une ou plusieurs UDF qui peuvent être référencées par une instruction SELECT ultérieure dans la requête. Vous avez besoin du nom de la méthode de l'UDF et du nom de la fonction Lambda qui héberge l'UDF. À la place du nom de la fonction Lambda, vous pouvez utiliser l'ARN Lambda. Dans les scénarios entre comptes, l'ARN Lambda est requis.

Résumé

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)] [...]

Paramètres

USING EXTERNAL FUNCTION UDF_name(variable1 data_type[, variable2 data_type][,...])

UDF_name spécifie le nom de l'UDF, qui doit correspondre à une méthode Java au sein de la fonction Lambda référencée. Chaque élément data_type variable spécifie une variable nommée et son type de données correspondant que l'UDF accepte en entrée. Le data_type doit être l'un des types de données Athena pris en charge, répertoriés dans le tableau suivant, et être mappé sur le type de données Java correspondant.

Type de données Athena Type de données 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 (voir la note 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 type_données

data_type spécifie le type de données SQL que l'UDF renvoie en sortie. Les types de données Athena répertoriés dans le tableau ci-dessus sont pris en charge. Pour le type de données DECIMAL, utilisez la syntaxe RETURNS DECIMAL(precision, scale) où la précision et l'échelle sont des entiers.

LAMBDA 'lambda_function'

lambda_function spécifie le nom de la fonction Lambda à invoquer lors de l'exécution de l'UDF.

SELECT [...] UDF_name(expression) [...]

La requête SELECT qui transmet des valeurs à l'UDF et renvoie un résultat. UDF_name spécifie l'UDF à utiliser, suivie d'une expression qui est évaluée pour transmettre des valeurs. Les valeurs transmises et renvoyées doivent correspondre aux types de données correspondants spécifiés pour l'UDF dans la clause USING EXTERNAL FUNCTION.

Exemples

Pour des exemples de requêtes basées sur le code AthenaUDFHandler.java sur GitHub, consultez la page Connecteur UDF Amazon Athena sur GitHub.