Databricks SQL Lambdafunktionen

Ein parametrisierter Ausdruck, der an eine Funktion übergeben werden kann, um ihr Verhalten zu steuern.

Beispielsweise akzeptiert array_sort Funktion (Databricks SQL) eine Lambdafunktion als Argument, um eine benutzerdefinierte Sortierreihenfolge zu definieren.

Syntax

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

Parameter

  • paramN: Ein paramN der von der übergeordneten Funktion verwendet wird, um Argumente für die Lambdafunktion zu übergeben.
  • expr: Ein einfacher Ausdruck, der auf verweist, paramN der keine Unterabfrage enthält.

Gibt zurück

Der Ergebnistyp wird durch den Ergebnistyp von expr definiert.

Wenn mehrere vorhanden paramN sind, müssen die Parameternamen eindeutig sein. Die Typen der Parameter werden von der aufrufende Funktion festgelegt. Muss expression für diese Typen gültig sein, und der Ergebnistyp muss den definierten Erwartungen der aufrufenden Funktionen entsprechen.

Beispiele

Die funktion array_sort (Databricks SQL) erwartet eine Lambdafunktion mit zwei Parametern. Die Parametertypen sind der Typ der Elemente des zu sortierenden Arrays. Es wird erwartet, dass der Ausdruck eine GANZE ZAHL zurückgibt, wobei -1 param1<param2 bedeutet, 0 bedeutet param1 = param2 , andernfalls 1.

Um ein ARRAY von STRING in lexikalischer Reihenfolge von rechts nach links zu sortieren, können Sie die folgende Lambdafunktion verwenden.

(p1, p2) -> CASE WHEN p1 = p2 THEN 0
                 WHEN reverse(p1) < reverse(p2) THEN -1
                 ELSE 1 END

Lambdafunktionen werden definiert und ad hoc verwendet. Die Funktionsdefinition ist also das 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]