Lambda – funkce
Platí pro: , kontrola Databricks SQL 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íparamN
na , 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 paramN
parametr , 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
= param2
a 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]