Fonctions lambda

S’applique à :case marquée oui Databricks SQL case marquée oui 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]