Una lambda es una función anónima. No requiere un nombre y se puede pasar como parámetro a otras funciones o métodos. Este tema describe los límites, la sintaxis y los ejemplos de uso de las funciones lambda.
Límites
No son compatibles las subconsultas, como
x->2+(SELECT3).No son compatibles las agregaciones, como
x -> max(y).
Sintaxis
La sintaxis es: lista de parámetros -> expresión o bloque de código
Lista de parámetros: los parámetros que acepta la función lambda. La lista puede estar vacía o contener uno o más parámetros.
->: separa la lista de parámetros de la expresión o del bloque de código.
Ejemplos
-
Ejemplo 1: calcular el cuadrado de los valores en una columna de tipo arreglo
SELECT numbers,transform(numbers, n -> n * n) as squared_numbers FROM ( VALUES (ARRAY(1, 2)),(ARRAY(3, 4)),(ARRAY(5, 6, 7)) ) AS t(numbers);A continuación se muestra el resultado devuelto:
+------------+-----------------+ | numbers | squared_numbers | +------------+-----------------+ | [5,6,7] | [25,36,49] | | [3,4] | [9,16] | | [1,2] | [1,4] | +------------+-----------------+ -
Ejemplo 2: convertir un arreglo en una cadena
SELECT transform(prices, n -> CAST(n AS STRING ) || '$') as price_tags FROM ( VALUES (ARRAY(100, 200)),(ARRAY(30, 4)) ) AS t(prices);A continuación se muestra el resultado devuelto:
+------------+ | price_tags | +------------+ | ["30$","4$"] | | ["100$","200$"] | +------------+ -
Ejemplo 3: calcular el valor de una función lineal
SELECT xvalues, a, b, transform(xvalues, x -> a * x + b) as linear_function_values FROM ( VALUES (ARRAY(1, 2), 10, 5),(ARRAY(3, 4), 4, 2) ) AS t(xvalues, a, b);A continuación se muestra el resultado devuelto:
+------------+------------+------------+------------------------+ | xvalues | a | b | linear_function_values | +------------+------------+------------+------------------------+ | [3,4] | 4 | 2 | [14,18] | | [1,2] | 10 | 5 | [15,25] | +------------+------------+------------+------------------------+