Lambda – funkce

Platí pro:zaškrtnutá možnost Ano , kontrola Databricks SQL označená ano Databricks Runtime

Parametrizovaný výraz, který lze předat funkci za účelem řízení jejího chování.

Například funkce array_sort přijímá funkci lambda jako argument pro definování vlastního pořadí řazení.

Syntaxe

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

Parametry

  • paramN: Identifikátor používaný nadřazenou funkcí k předávání argumentů pro funkci lambda.
  • expr: Libovolný jednoduchý výraz odkazující paramNna , který neobsahuje poddotaz nebo uživatelem definovanou funkci SQL.

Vrátí

Typ výsledku je definován typem výsledku .expr

Pokud existuje více než jeden paramNparametr , musí být názvy parametrů jedinečné. Typy parametrů jsou nastaveny vyvoláním funkce. Pro expression tyto typy musí být platný a typ výsledku musí odpovídat definovaným očekáváním vyvolání funkcí.

Příklady

Funkce array_sort očekává funkci lambda se dvěma parametry. Typy parametrů budou typem prvků pole, které se mají seřadit. Očekává se, že výraz vrátí celé číslo, kde -1 znamená param1<param2, 0 znamená param1 = param2a v opačném případě 1.

Pokud chcete seřadit POLE ŘETĚZCE v lexikálním pořadí zprava doleva, můžete použít následující funkci lambda.

(p1, p2) -> CASE WHEN p1 = p2 THEN 0
                 WHEN reverse(p1) < reverse(p2) THEN -1
                 ELSE 1 END

Funkce lambda se definují a používají ad hoc. Definice funkce je tedy 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]