All Products
Search
Document Center

Simple Log Service:Ekspresi Lambda

Last Updated:Jun 21, 2026

Layanan Log memungkinkan Anda mendefinisikan ekspresi lambda dalam pernyataan SQL dan Simple Log Service Processing Language (SPL), lalu meneruskannya ke fungsi tertentu untuk memperluas fungsionalitasnya. Topik ini menjelaskan sintaks ekspresi lambda dan memberikan contoh penggunaannya.

Sintaks

Ekspresi lambda harus digunakan bersama fungsi orde tinggi, seperti fungsi filter, fungsi reduce, fungsi transform, fungsi zip_with, atau fungsi map_filter. Sintaks ekspresi lambda adalah sebagai berikut:

parameter -> expression

Parameter

Description

parameter

Sebuah identifier untuk parameter input.

expression

Ekspresi yang akan dievaluasi. Sebagian besar ekspresi MySQL valid dalam ekspresi lambda. Contohnya:

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)

Contoh

Contoh 1: Filter elemen null

Mengembalikan elemen non-null dari array [5, null, 7, null].

  • Query and analysis statement

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

Contoh 2: Jumlahkan elemen array

Mengembalikan jumlah semua elemen dalam array [5, 20, 50].

  • Query and analysis statement

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • Hasilnya adalah 75 (jumlah kumulatif dari 5 + 20 + 50).

Contoh 3: Filter map berdasarkan nilai

Membuat map dari dua array dan hanya menyimpan pasangan kunci-nilai dengan nilai lebih besar dari 10.

  • Query and analysis statement

    * | SELECT map_filter(map(array['class01', 'class02', 'class03'], array[11, 10, 9]), (k,v) -> v > 10)
  • Hasilnya adalah {"class01":11}. Fungsi ini hanya menyimpan pasangan kunci-nilai dengan nilai lebih besar dari 10.

Contoh 4: Tukar elemen berpasangan

Contoh ini memasangkan elemen dari dua array pada indeks yang sama, lalu menerapkan ekspresi lambda untuk menukar elemen dalam setiap pasangan sehingga menghasilkan array bersarang baru.

  • Query and analysis statement

    * | SELECT zip_with(array[1, 3, 5], array['a', 'b', 'c'], (x, y) -> (y, x))
  • Hasilnya adalah [["a",1],["b",3],["c",5]]. Ekspresi lambda menukar urutan setiap pasangan elemen dan menggabungkannya menjadi array bersarang.

Contoh 5: Transformasi elemen dengan penanganan null

Menambahkan 1 ke setiap elemen dalam array [5, NULL, 6]. Jika suatu elemen bernilai null, elemen tersebut terlebih dahulu dikonversi menjadi 0.

  • Query and analysis statement

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

Contoh lainnya

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