Databricks SQL lambda-functies

Een geparameteriseerde expressie die kan worden doorgegeven aan een functie om het gedrag ervan te bepalen.

De functie array_sort accepteert bijvoorbeeld een lambda-functie als argument voor het definiëren van een aangepaste sorteerorde.

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 die verwijst naar paramN , die geen subquery bevat.

Retouren

Het resultaattype wordt gedefinieerd door het resultaattype expr .

Als er meer dan één paramN is, moeten de parameternamen uniek zijn. De typen parameters worden ingesteld door de aanroepfunctie. De moet geldig zijn voor deze typen en het resultaattype moet overeenkomen met de expression gedefinieerde verwachtingen van de aanroepende functies.

Voorbeelden

De functie array_sort verwacht een lambda-functie met twee parameters. De parametertypen zijn het type van de elementen van de matrix die moeten worden gesorteerd. Van de expressie wordt verwacht dat deze een GEHEEL GETAL retournt, waarbij -1 staat voor param1 < param2 , 0 param1 = param2 betekent en 1 anders.

Als u een MATRIX van STRING in een lexicale volgorde 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 ad hoc gedefinieerd en 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]