Funkcje lambda
Dotyczy: Databricks SQL Databricks Runtime
Wyrażenie sparametryzowane, które można przekazać do funkcji w celu kontrolowania jego zachowania.
Na przykład funkcja array_sort akceptuje funkcję lambda jako argument definiujący niestandardową kolejność sortowania.
Składnia
{ param -> expr |
(param1 [, ...] ) -> expr }
Parametry
paramN
: identyfikator używany przez funkcję nadrzędną do przekazywania argumentów dla funkcji lambda.expr
: dowolne proste wyrażenie odwołująceparamN
się do elementu , które nie zawiera podzapytania ani funkcji zdefiniowanej przez użytkownika SQL.
Zwraca
Typ wyniku jest definiowany przez typ wyniku .expr
Jeśli istnieje więcej niż jeden paramN
parametr , nazwy parametrów muszą być unikatowe. Typy parametrów są ustawiane przez funkcję wywoływania.
Wartość musi być prawidłowa expression
dla tych typów, a typ wyniku musi być zgodny ze zdefiniowanymi oczekiwaniami funkcji wywoływania.
Przykłady
Funkcja array_sort oczekuje funkcji lambda z dwoma parametrami.
Typy parametrów będą typem elementów tablicy do sortowania.
Oczekuje się, że wyrażenie zwróci liczbę CAŁKOWITĄ, gdzie -1 oznacza param1
<param2
, 0 oznacza param1
= param2
, i 1 w przeciwnym razie.
Aby posortować tablicę ciągu w kolejności leksykalnej od prawej do lewej, możesz użyć następującej funkcji lambda.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Funkcje lambda są definiowane i używane ad hoc. Dlatego definicja funkcji jest argumentem:
> 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]