全部产品
Search
文档中心

Simple Log Service:Ekspresi Lambda

更新时间:Jul 02, 2025

Simple Log Service memungkinkan Anda mendefinisikan ekspresi lambda dalam Structured Query Language (SQL) atau Simple Log Service Processing Language (SPL), serta meneruskan ekspresi tersebut ke fungsi tertentu. Topik ini menjelaskan sintaksis ekspresi lambda dan memberikan contoh penggunaannya.

Sintaksis

Ekspresi lambda harus digunakan bersama dengan fungsi seperti filter function, reduce function, transform function, zip_with function, dan map_filter function.

parameter -> expression

Parameter

Deskripsi

parameter

Pengenal yang digunakan untuk meneruskan parameter.

expression

Ekspresi lambda, yang dapat mencakup sebagian besar ekspresi MySQL. Contoh:

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: x -> x is not null

Ekspresi lambda ini mengembalikan elemen-elemen non-null dalam array [5, null, 7, null].

  • Pernyataan kueri

    * | SELECT filter(array[5, null, 7, null], x -> x is not null)
  • Hasil kueri dan analisisfilter function

Contoh 2: 0, (s, x) -> s + x, s -> s

Ekspresi lambda ini mengembalikan jumlah setiap elemen dalam array [5, 20, 50].

  • Pernyataan kueri

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • Hasil kueri dan analisisreduce

Contoh 3: (k,v) -> v > 10

Ekspresi lambda ini membuat peta dari dua array dengan nilai-nilai kunci lebih besar dari 10.

  • Pernyataan kueri

    * | SELECT map_filter(map(array['class01', 'class02', 'class03'], array[11, 10, 9]), (k,v) -> v > 10)
  • Hasil kueri dan analisismap_filter

Contoh 4: (x, y) -> (y, x)

Ekspresi lambda ini menukar elemen-elemen dalam dua array dan membentuk array dua dimensi baru berdasarkan indeks yang sama.

  • Pernyataan kueri

    * | SELECT zip_with(array[1, 3, 5], array['a', 'b', 'c'], (x, y) -> (y, x))
  • Hasil kueri dan analisiszip_with

Contoh 5: x -> coalesce(x, 0) + 1

Ekspresi lambda ini menambahkan 1 ke setiap elemen dalam array [5, NULL, 6], dengan elemen null diubah menjadi 0 sebelum operasi penambahan.

  • Pernyataan kueri

    * | SELECT transform(array[5, NULL, 6], x -> coalesce(x, 0) + 1)
  • Hasil kueri dan analisistransform

Contoh tambahan

* | SELECT filter(array[], x -> true)
* | SELECT map_filter(map(array[],array[]), (k, v) -> true)
* | SELECT reduce(array[5, 6, 10, 20], -- menghitung rata-rata aritmatika: 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))