Fonctions lambda
S’applique à : Databricks SQL Databricks Runtime
Expression paramétrisée qui peut être passée à une fonction pour contrôler son comportement.
Par exemple, array_sort, fonction accepte une fonction lambda comme argument pour définir un ordre de tri personnalisé.
Syntaxe
{ param -> expr |
(param1 [, ...] ) -> expr }
Paramètres
paramN
: identificateur utilisé par la fonction parente pour passer des arguments pour la fonction lambda.expr
: toute expression simple faisant référence àparamN
, qui ne contient pas de sous-requête ou de fonction SQL définie par l’utilisateur.
Retours
Le type de résultat est défini par le type de résultat de expr
.
S’il existe plus d’un paramN
, les noms de paramètres doivent être uniques. Les types des paramètres sont définis par la fonction appelante.
expression
doit être valide pour ces types et le type de résultat doit correspondre aux attentes définies des fonctions appelantes.
Exemples
La fonction array_sort, fonction attend une fonction lambda avec deux paramètres.
Les types de paramètres seront le type des éléments du tableau à trier.
L’expression est supposée retourner une valeur INTEGER où -1 signifie param1
<param2
, 0 signifie param1
= param2
et 1 dans le cas contraire.
Pour trier une valeur ARRAY de type STRING dans l’ordre lexical de droite à gauche, vous pouvez utiliser la fonction lambda suivante.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Les fonctions lambda sont définies et utilisées ad hoc. La définition de fonction est donc l’argument :
> SELECT array_sort(array('Hello', 'World'),
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END);
[World, Hello]