Funciones Lambda
Se aplica a: Databricks SQL Databricks Runtime
Expresión parametrizada que se puede pasar a una función para controlar su comportamiento.
Por ejemplo, la función array_sort acepta una función lambda como argumento para definir un criterio de ordenación personalizado.
Sintaxis
{ param -> expr |
(param1 [, ...] ) -> expr }
Parámetros
paramN
: identificador que la función primaria usa para pasar argumentos de la función lambda.expr
: cualquier expresión simple que haga referencia aparamN
, que no contenga una subconsulta o una función definida por el usuario de SQL.
Devoluciones
El tipo de resultado viene definido por el de expr
.
Si hay más de un paramN
, los nombres de parámetro deben ser únicos. Los tipos de los parámetros los establece la función que se invoca.
expression
debe ser válido para estos tipos; por su parte, el tipo de resultado debe coincidir con las expectativas definidas de las funciones que se invocan.
Ejemplos
La función array_sort espera una función lambda con dos parámetros.
Los tipos de parámetro serán el tipo de los elementos de la matriz que se van a ordenar.
Se espera que la expresión devuelva un INTEGER, donde -1 significa param1
<param2
, 0, param1
= param2
y 1, lo contrario.
Para ordenar una matriz de cadenas en un orden léxico de derecha a izquierda, puede usar la siguiente función lambda.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Las funciones lambda se definen y usan ad hoc. Por lo tanto, la definición de función es el argumento:
> 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]