Todos os produtos
Search
Central de documentação

Simple Log Service:Expressões lambda

Última atualização: Jul 03, 2026

O Log Service permite definir expressões lambda em instruções SQL e na Simple Log Service Processing Language (SPL) e passá-las a funções específicas para estender suas funcionalidades. Este tópico descreve a sintaxe das expressões lambda e apresenta exemplos de uso.

Sintaxe

Use uma expressão lambda sempre com uma função de ordem superior, como a função filter, a função reduce, a função transform, a função zip_with ou a função map_filter. A sintaxe da expressão lambda é:

parameter -> expression

Parâmetro

Descrição

parameter

Identificador dos parâmetros de entrada.

expression

Expressão a avaliar. A maioria das expressões MySQL é válida em expressões lambda. Exemplos:

x -> x + 1
(x, y) -> x + y
x -> regexp_like(x, 'a+')
x -> x[1] / x[2]
x -> if(x > 0, x, -x)
x -> coalesce(x, 0)
x -> cast(x AS JSON)
x -> x + try(1 / 0)

Exemplos

Exemplo 1: Filtrar elementos nulos

Retorna os elementos não nulos do array [5, null, 7, null].

  • Instrução de consulta e análise

    * | SELECT filter(array[5, null, 7, null], x -> x is not null)
  • Resultado: [5,7].

Exemplo 2: Somar elementos do array

Retorna a soma de todos os elementos do array [5, 20, 50].

  • Instrução de consulta e análise

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • Resultado: 75 (soma acumulada de 5+20+50).

Exemplo 3: Filtrar um mapa por valor

Cria um mapa a partir de dois arrays e mantém apenas os pares chave-valor com valores maiores que 10.

  • Instrução de consulta e análise

    * | SELECT map_filter(map(array['class01', 'class02', 'class03'], array[11, 10, 9]), (k,v) -> v > 10)
  • Resultado: {"class01":11}. A função retém apenas os pares chave-valor com valores maiores que 10.

Exemplo 4: Trocar elementos pareados

Este exemplo pareia elementos de dois arrays no mesmo índice e aplica uma expressão lambda para trocar os elementos de cada par, criando um novo array aninhado.

  • Instrução de consulta e análise

    * | SELECT zip_with(array[1, 3, 5], array['a', 'b', 'c'], (x, y) -> (y, x))
  • Resultado: [["a",1],["b",3],["c",5]]. A expressão lambda inverte a ordem de cada par de elementos e os combina em um array aninhado.

Exemplo 5: Transformar elementos com tratamento de nulos

Adiciona 1 a cada elemento do array [5, NULL, 6]. Caso um elemento seja nulo, ele é convertido para 0 antes da operação.

  • Instrução de consulta e análise

    * | SELECT transform(array[5, NULL, 6], x -> coalesce(x, 0) + 1)
  • Resultado: [6,1,7].

Outros exemplos

* | SELECT filter(array[], x -> true)
* | SELECT map_filter(map(array[],array[]), (k, v) -> true)
* | SELECT reduce(array[5, 6, 10, 20], -- calculates arithmetic average: 10.25
              cast(row(0.0, 0) AS row(sum double, count integer)),
              (s, x) -> cast(row(x + s.sum, s.count + 1) AS row(sum double, count integer)),
              s -> if(s.count = 0, null, s.sum / s.count))
* | SELECT reduce(array[2147483647, 1], cast(0 AS bigint), (s, x) -> s + x, s -> s)
* | SELECT reduce(array[5, 20, null, 50], 0, (s, x) -> s + x, s -> s)
* | SELECT transform(array[array[1, null, 2], array[3, null]], a -> filter(a, x -> x is not null))
* | SELECT zip_with(array['a', 'b', 'c'], array['d', 'e', 'f'], (x, y) -> concat(x, y))