Databricks SQL fonctions lambda

Expression paramétrable 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 référençant paramN , qui ne contient pas de sous-requête.

Retours

Le type de résultat est défini par le type de résultat de expr .

S’il en existe plusieurs paramN , les noms de paramètres doivent être uniques. Les types des paramètres sont définis par la fonction appelante. expressionDoit être valide pour ces types et le type de résultat doit correspondre aux attentes définies des fonctions appelées.

Exemples

La fonction de fonction array_sort 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 un entier où-1 signifie param1 < param2 , 0 signifie param1 = param2 et 1 dans le cas contraire.

Pour trier un tableau de chaînes dans un 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 dans 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]