Funzioni lambda
Si applica a: Databricks SQL 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 riferimentoparamN
a , 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 paramN
oggetto , 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 param1
param2
<param2
param1
= 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]