Sdílet prostřednictvím


Funkce lambda

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano 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 = param2a 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]