Udostępnij za pośrednictwem


Funkcje lambda

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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ące paramNsię 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 paramNparametr , 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]