Funkcje lambda SQL Databricks

Wyrażenie sparametryzowane, które może zostać przekazane do funkcji w celu kontrolowania jej zachowania.

Na przykład array_sort (Databricks SQL) akceptuje funkcję lambda jako argument definiujący niestandardową kolejność sortowania.

Składnia

{ param -> expr |
  (param1 [, ...] ) -> expr }

Parametry

  • paramN: paramN przez funkcję nadrzędną do przekazania argumentów dla funkcji lambda.
  • expr: dowolne proste wyrażenie odwołujące się paramN do , które nie zawiera podzapytania.

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łania. Musi być prawidłowy dla tych typów, a typ wyniku musi odpowiadać zdefiniowanym oczekiwaniom funkcji expression wywołania.

Przykłady

Funkcja array_sort (Databricks SQL) oczekuje funkcji lambda z dwoma parametrami. Typy parametrów będą typem elementów tablicy do posortowania. Oczekuje się, że wyrażenie zwróci liczbę CAŁKOWITĄ, gdzie -1 oznacza , 0 oznacza wartość , a w przeciwnym razie param1<param2param1 = param2 wartość 1.

Aby posortować TABLICĘ CIĄGU w kolejności od prawej do lewej leksykalne, można 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]