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(variable1data_type[,variable2data_type][,...]) -
UDF_namespé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émentdata_type variablespécifie une variable nommée et son type de données correspondant que l'UDF accepte en entrée. Ledata_typedoit ê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_typespé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éesDECIMAL, utilisez la syntaxeRETURNS DECIMAL(où laprecision,scale)précisionet l'échellesont des entiers. - LAMBDA '
lambda_function' -
lambda_functionspécifie le nom de la fonction Lambda à invoquer lors de l'exécution de l'UDF. - SELECT [...]
UDF_name(expression) [...] -
La requête
SELECTqui transmet des valeurs à l'UDF et renvoie un résultat.UDF_namespécifie l'UDF à utiliser, suivie d'uneexpressionqui 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 clauseUSING EXTERNAL FUNCTION.
Exemples
Pour des exemples de requêtes basées sur le code AthenaUDFHandler.java