Uma função lambda é anônima. Ela não exige nome e pode ser passada como parâmetro para outras funções ou métodos. Este tópico descreve os limites, a sintaxe e os exemplos de uso de funções lambda no MaxCompute.
Limites
Não há suporte a subconsultas, como
x->2+(SELECT3).Também não há suporte a agregações, como
x -> max(y).
Sintaxe
A sintaxe é: lista de parâmetros -> expressão ou bloco de código
Lista de parâmetros: os parâmetros aceitos pela função lambda. A lista pode estar vazia ou conter um ou mais parâmetros.
->: separa a lista de parâmetros da expressão ou do bloco de código.
Exemplos
-
Exemplo 1: Calcular o quadrado dos valores em uma coluna de array
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);O resultado é o seguinte:
+------------+-----------------+ | numbers | squared_numbers | +------------+-----------------+ | [5,6,7] | [25,36,49] | | [3,4] | [9,16] | | [1,2] | [1,4] | +------------+-----------------+ -
Exemplo 2: Converter um array em uma string
SELECT transform(prices, n -> CAST(n AS STRING ) || '$') as price_tags FROM ( VALUES (ARRAY(100, 200)),(ARRAY(30, 4)) ) AS t(prices);O resultado é o seguinte:
+------------+ | price_tags | +------------+ | ["30$","4$"] | | ["100$","200$"] | +------------+ -
Exemplo 3: Calcular o valor de uma função linear
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);O resultado é o seguinte:
+------------+------------+------------+------------------------+ | xvalues | a | b | linear_function_values | +------------+------------+------------+------------------------+ | [3,4] | 4 | 2 | [14,18] | | [1,2] | 10 | 5 | [15,25] | +------------+------------+------------+------------------------+