Lambda-funktioner
Gäller för: Databricks SQL Databricks Runtime
Ett parametriserat uttryck som kan skickas till en funktion för att styra dess beteende.
Till exempel accepterar funktionen array_sort en lambda-funktion som ett argument för att definiera en anpassad sorteringsordning.
Syntax
{ param -> expr |
(param1 [, ...] ) -> expr }
Parametrar
paramN
: En identifierare som används av den överordnade funktionen för att skicka argument för lambda-funktionen.expr
: Alla enkla uttryck som refererarparamN
till , som inte innehåller en underfråga eller en SQL-användardefinierad funktion.
Returer
Resultattypen definieras av resultattypen expr
.
Om det finns fler än en paramN
måste parameternamnen vara unika. Parametrarnas typer anges av den anropande funktionen.
expression
Måste vara giltig för dessa typer och resultattypen måste matcha de definierade förväntningarna för de anropande funktionerna.
Exempel
Funktionen array_sort förväntar sig en lambda-funktion med två parametrar.
Parametertyperna är den typ av element i matrisen som ska sorteras.
Uttrycket förväntas returnera ett HELTAL där -1 betyder param1
<param2
, 0 betyder param1
= param2
, och 1 annars.
Om du vill sortera en MATRIS med STRING i en lexikal ordning från höger till vänster kan du använda följande lambda-funktion.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Lambda-funktioner definieras och används ad hoc. Så funktionsdefinitionen är argumentet:
> 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]