Funciones Lambda

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí 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 a paramN, 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]