Condividi tramite


Funzioni lambda

Si applica a: segno di spunta sì Databricks SQL segno di spunta 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 riferimento paramNa , che non contiene una sottoquery o una funzione definita dall'utente SQL.

Valori restituiti

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

Se sono presenti più di un paramNoggetto , 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 richiamo.

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 dove -1 indica , 0 indica param1param2<param2param1 = e 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]