Todos os produtos
Search
Central de documentação

MaxCompute:Funções Lambda

Última atualização: Jun 26, 2026

Uma lambda é uma função 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 exemplos de uso das funções lambda.

Expressões lambda são funções anônimas que dispensam nomenclatura e funcionam como parâmetros em outras funções ou métodos. Utilize-as para aplicar transformações e filtros no nível de elemento em arrays e estruturas de dados complexas diretamente na consulta, sem definir uma função nomeada.

Sintaxe

parameter_list -> expression

A lista de parâmetros pode estar vazia ou conter um ou mais parâmetros. Use parênteses ao especificar múltiplos parâmetros. O delimitador -> separa a lista de parâmetros da expressão ou bloco de código. A função invocadora determina os tipos dos parâmetros.

Limitações

  • O sistema não oferece suporte a subconsultas. Por exemplo, x -> 2 + (SELECT 3) é inválido.

  • Operações de agregação não têm suporte. Por exemplo, x -> max(y) é inválido.

Exemplos

Todos os exemplos utilizam transform(), uma função de ordem superior que aplica uma expressão lambda a cada elemento de um array.

Elevar ao quadrado cada elemento de um 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);

Resultado:

+------------+-----------------+
| numbers    | squared_numbers |
+------------+-----------------+
| [5,6,7]    | [25,36,49]      |
| [3,4]      | [9,16]          |
| [1,2]      | [1,4]           |
+------------+-----------------+

Formatar elementos do array como strings de preço

A expressão lambda converte cada inteiro em string e adiciona um símbolo monetário ao final.

SELECT transform(prices, n -> CAST(n AS STRING) || '$') AS price_tags
FROM (
    VALUES (ARRAY(100, 200)), (ARRAY(30, 4))
) AS t(prices);

Resultado:

+-----------------+
| price_tags      |
+-----------------+
| ["100$","200$"] |
| ["30$","4$"]    |
+-----------------+

Avaliar uma função linear em um array

Além da coluna de array em transformação, a expressão lambda pode capturar outras colunas da mesma linha. Este exemplo avalia f(x) = ax + b para cada elemento.

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);

Resultado:

+---------+----+---+------------------------+
| xvalues | a  | b | linear_function_values |
+---------+----+---+------------------------+
| [3,4]   | 4  | 2 | [14,18]                |
| [1,2]   | 10 | 5 | [15,25]                |
+---------+----+---+------------------------+