Funzioni lambda

Si applica a:check contrassegnato con sì controllo SQL di Databricks contrassegnato con sì Databricks Runtime

Espressione con parametri che può essere passata a una funzione per controllarne il comportamento.

Ad esempio, array_sort funzione accetta una funzione lambda come argomento per definire un ordinamento personalizzato.

Sintassi

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

Parametri

  • paramN: identificatore utilizzato dalla funzione padre per passare argomenti per la funzione lambda.
  • expr: qualsiasi espressione semplice che fa paramNriferimento a , che non contiene una sottoquery o una funzione sql definita dall'utente.

Restituisce

Il tipo di risultato è definito dal tipo di risultato di expr.

Se sono presenti più di un paramN, i nomi dei parametri devono essere univoci. I tipi dei parametri vengono impostati dalla funzione di richiamo. Deve expression essere valido per questi tipi e il tipo di risultato deve corrispondere alle aspettative definite delle funzioni di chiamata.

Esempi

La funzione array_sort prevede una funzione lambda con due parametri. I tipi di parametro saranno il tipo degli elementi della matrice da ordinare. L'espressione deve restituire un valore INTEGER in cui -1 indica param1<param2, 0 indica param1 = param2e 1 in caso contrario.

Per ordinare una matrice di STRING in un ordine lessicale da destra a sinistra, è possibile usare la funzione lambda seguente.

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

Le funzioni lambda vengono definite e usate ad hoc. La definizione della funzione è quindi l'argomento :

> 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]