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 -> expressionParameter | Deskripsi |
parameter | Pengenal yang digunakan untuk meneruskan parameter. |
expression | Ekspresi lambda, yang dapat mencakup sebagian besar ekspresi MySQL. Contoh: |
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 analisis

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 analisis

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 analisis

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 analisis

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 analisis

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