Funkce lambda
Platí pro: Databricks SQL Databricks Runtime
Parametrizovaný výraz, který lze předat funkci za účelem řízení jeho chování.
Například array_sort funkce přijímá funkci lambda jako argument k definování vlastního pořadí řazení.
Syntaxe
{ param -> expr |
(param1 [, ...] ) -> expr }
Parameters
-
paramN
: identifier, kterou nadřazená funkce používá k předávání argumentů pro funkci lambda. -
expr
: Jakýkoli jednoduchý výraz odkazujícíparamN
, který neobsahuje poddotaz nebo uživatelem definovanou funkci SQL.
Návraty
Typ výsledku je definován typem výsledku expr
.
Pokud existuje více než jedna paramN
, musí být názvy parametrů jedinečné. Typy parameters jsou určeny vyvolávající funkcí jako set.
Musí expression
být platné pro tyto typy 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 parameters.
Typy parametrů budou typem prvků pole, které se mají seřadit.
Očekává se, že výraz vrátí hodnotu INTEGER where -1 znamená param1
<param2
, 0 znamená param1
= param2
a 1 jinak.
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]