Une fonction lambda est une fonction anonyme. Elle ne nécessite pas de nom et peut être passée en paramètre à d'autres fonctions ou méthodes. Cette rubrique décrit les limites, la syntaxe et des exemples d'utilisation des fonctions lambda.
Limites
Les sous-requêtes ne sont pas prises en charge, par exemple
x->2+(SELECT3).Les agrégations ne sont pas prises en charge, par exemple
x -> max(y).
Syntaxe
La syntaxe est la suivante : liste de paramètres -> expression ou bloc de code
Liste de paramètres : paramètres acceptés par la fonction lambda. La liste peut être vide ou contenir un ou plusieurs paramètres.
->: sépare la liste de paramètres de l'expression ou du bloc de code.
Exemples
-
Exemple 1 : calculer le carré des valeurs d'une colonne de type tableau
SELECT numbers,transform(numbers, n -> n * n) as squared_numbers FROM ( VALUES (ARRAY(1, 2)),(ARRAY(3, 4)),(ARRAY(5, 6, 7)) ) AS t(numbers);Le résultat suivant s'affiche :
+------------+-----------------+ | numbers | squared_numbers | +------------+-----------------+ | [5,6,7] | [25,36,49] | | [3,4] | [9,16] | | [1,2] | [1,4] | +------------+-----------------+ -
Exemple 2 : convertir un tableau en chaîne de caractères
SELECT transform(prices, n -> CAST(n AS STRING ) || '$') as price_tags FROM ( VALUES (ARRAY(100, 200)),(ARRAY(30, 4)) ) AS t(prices);Le résultat suivant s'affiche :
+------------+ | price_tags | +------------+ | ["30$","4$"] | | ["100$","200$"] | +------------+ -
Exemple 3 : calculer la valeur d'une fonction linéaire
SELECT xvalues, a, b, transform(xvalues, x -> a * x + b) as linear_function_values FROM ( VALUES (ARRAY(1, 2), 10, 5),(ARRAY(3, 4), 4, 2) ) AS t(xvalues, a, b);Le résultat suivant s'affiche :
+------------+------------+------------+------------------------+ | xvalues | a | b | linear_function_values | +------------+------------+------------+------------------------+ | [3,4] | 4 | 2 | [14,18] | | [1,2] | 10 | 5 | [15,25] | +------------+------------+------------+------------------------+