Funkcje lambda usługi Databricks SQL

Wyrażenie sparametryzowane, które można przekazać do funkcji w celu kontrolowania jego zachowania.

Na przykład funkcja array_sort (Databricks SQL) 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 podquerii.

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. Musi expression być prawidłowy dla tych typów, a typ wyniku musi być zgodny ze zdefiniowanymi oczekiwaniami funkcji wywoływania.

Przykłady

Funkcja array_sort (Databricks SQL) 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]