Databricks SQL lambda-funktioner

Ett parametriserat uttryck som kan skickas till en funktion för att styra dess beteende.

Till exempel array_sort (Databricks SQL) en lambda-funktion som ett argument för att definiera en anpassad sorteringsordning.

Syntax

{ param -> expr |
  (param1 [, ...] ) -> expr }

Parametrar

  • paramN: En paramN som används av den överordnade funktionen för att skicka argument för lambda-funktionen.
  • expr: Ett enkelt uttryck som refererar paramN till , som inte innehåller någon underfråga.

Returer

Resultattypen definieras av resultattypen expr .

Om det finns fler än paramN ett måste parameternamnen vara unika. Typerna av parametrar anges av funktionen för anrop. måste expression vara giltig för dessa typer och resultattypen måste matcha de definierade förväntningarna för anropsfunktionerna.

Exempel

Funktionen array_sort (Databricks SQL) förväntar sig en lambda-funktion med två parametrar. Parametertyperna är typen 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 lexikal ordning åt 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. Funktionsdefinitionen är alltså 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]