Lambda-functies
Van toepassing op: Databricks SQL Databricks Runtime
Een geparameteriseerde expressie die kan worden doorgegeven aan een functie om het gedrag ervan te bepalen.
Array_sort functie accepteert bijvoorbeeld een lambda-functie als argument om een aangepaste sorteervolgorde te definiƫren.
Syntaxis
{ param -> expr |
(param1 [, ...] ) -> expr }
Parameters
paramN
: Een id die door de bovenliggende functie wordt gebruikt om argumenten voor de lambda-functie door te geven.expr
: Een eenvoudige expressie waarnaar wordt verwezenparamN
, die geen subquery of een door de gebruiker gedefinieerde SQL-functie bevat.
Retouren
Het resultaattype wordt gedefinieerd door het resultaattype van expr
.
Als er meerdere paramN
parameters zijn, moeten de parameternamen uniek zijn. De typen parameters worden ingesteld door de aanroepfunctie.
De expression
waarde moet geldig zijn voor deze typen en het resultaattype moet overeenkomen met de gedefinieerde verwachtingen van de aanroepfuncties.
Voorbeelden
De functie array_sort verwacht een lambda-functie met twee parameters.
De parametertypen zijn het type elementen van de matrix dat moet worden gesorteerd.
De expressie retourneert naar verwachting een GEHEEL GETAL waarbij -1 betekent param1
<param2
, 0 betekent param1
= param2
en 1 anders.
Als u een MATRIX van TEKENREEKS in een lexicale volgorde van rechts naar links wilt sorteren, kunt u de volgende lambda-functie gebruiken.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Lambda-functies worden gedefinieerd en ad-hoc gebruikt. De functiedefinitie is dus het argument:
> 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]