Fungsi agregat menghitung nilai dari sebuah bidang dan mengembalikan satu nilai tunggal. Topik ini menjelaskan sintaksis fungsi agregat serta memberikan contoh penggunaannya.
Tabel berikut menjelaskan fungsi agregat yang didukung oleh Simple Log Service.
Fungsi | Sintaksis | Deskripsi | Didukung di SQL | Didukung di SPL |
arbitrary(x) | Mengembalikan nilai acak, bukan null dari bidang x. | √ | × | |
avg(x) | Menghitung rata-rata dari nilai-nilai bidang x. | √ | × | |
bitwise_and_agg(x) | Mengembalikan hasil operasi AND bitwise pada nilai-nilai bidang x. | √ | × | |
bitwise_or_agg(x) | Mengembalikan hasil operasi OR bitwise pada nilai-nilai bidang x. | √ | × | |
bool_and(ekspresi boolean) | Memeriksa apakah semua log memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true. Fungsi ini setara dengan fungsi every. | √ | × | |
bool_or(ekspresi boolean) | Memeriksa apakah ada log yang memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true. | √ | × | |
checksum(x) | Menghitung checksum dari nilai-nilai bidang x. | √ | × | |
count(*) | Menghitung jumlah log. | √ | × | |
count(1) | Menghitung jumlah log. Fungsi ini setara dengan fungsi count(*). | √ | × | |
count(x) | Menghitung jumlah log yang nilainya pada bidang x bukan NULL. | √ | × | |
count_if(ekspresi boolean) | Menghitung jumlah log yang memenuhi kondisi tertentu. | √ | × | |
every(ekspresi boolean) | Memeriksa apakah semua log memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true. Fungsi ini setara dengan fungsi bool_and. | √ | × | |
geometric_mean(x) | Menghitung rata-rata geometrik dari nilai-nilai bidang x. | √ | × | |
kurtosis(x) | Menghitung kurtosis dari nilai-nilai bidang x. | √ | × | |
map_union(x) | Mengembalikan hasil operasi union pada peta yang ditentukan. Jika suatu kunci ada di beberapa peta input, fungsi secara acak mengembalikan salah satu nilai dari kunci tersebut. | √ | × | |
max(x) | Mengambil nilai terbesar dari bidang x. | √ | × | |
max(x, n) | Mengambil n nilai terbesar dari bidang x. Fungsi mengembalikan array. | √ | × | |
max_by(x, y) | Mengambil nilai x yang terkait dengan nilai terbesar dari bidang y. | √ | × | |
max_by(x, y, n) | Mengambil nilai-nilai x yang terkait dengan n nilai terbesar dari bidang y. Fungsi mengembalikan array. | √ | × | |
min(x) | Mengambil nilai terkecil dari bidang x. | √ | × | |
min(x, n) | Mengambil n nilai terkecil dari bidang x. Fungsi mengembalikan array. | √ | × | |
min_by(x, y) | Mengambil nilai x yang terkait dengan nilai terkecil dari bidang y. | √ | × | |
min_by(x, y, n) | Mengambil nilai-nilai x yang terkait dengan n nilai terkecil dari bidang y. Fungsi mengembalikan array. | √ | × | |
skewness(x) | Menghitung skewness dari nilai-nilai bidang x. | √ | × | |
sum(x) | Menghitung jumlah dari nilai-nilai bidang x. | √ | × |
fungsi arbitrary
Fungsi arbitrary mengembalikan nilai acak, bukan null, dari bidang x.
Sintaksis
arbitrary(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
Mengembalikan nilai acak, bukan null, dari bidang request_method.
Pernyataan query (Debug)
* | SELECT arbitrary(request_method) AS request_methodHasil query dan analisis

fungsi avg
Fungsi avg menghitung rata-rata nilai-nilai dari bidang x.
Sintaksis
avg(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe double, bigint, decimal, atau real. |
Tipe nilai kembali
Tipe double.
Contoh
Mengembalikan proyek-proyek dengan latensi rata-rata lebih besar dari 1.000 mikrodetik.
Pernyataan query (Debug)
method: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000Hasil query dan analisis

fungsi bitwise_and_agg
Fungsi bitwise_and_agg mengembalikan hasil operasi AND bitwise pada nilai-nilai bidang x.
Sintaksis
bitwise_and_agg(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe bigint. |
Tipe nilai kembali
Tipe bigint dalam representasi biner.
Contoh
Mengembalikan hasil operasi AND bitwise pada nilai-nilai bidang request_time.
Pernyataan query (Debug)
* | SELECT bitwise_and_agg(status)Hasil query dan analisis

fungsi bitwise_or_agg
Fungsi bitwise_or_agg mengembalikan hasil operasi OR bitwise pada nilai-nilai bidang x.
Sintaksis
bitwise_or_agg(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe bigint. |
Tipe nilai kembali
Tipe bigint dalam representasi biner.
Contoh
Mengembalikan hasil operasi OR bitwise pada nilai-nilai bidang request_time.
Pernyataan query (Debug)
* | SELECT bitwise_or_agg(request_length)Hasil query dan analisis

fungsi bool_and
Fungsi bool_and memeriksa apakah semua log memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true. Fungsi ini setara dengan fungsi every.
Sintaksis
bool_and(ekspresi boolean)Parameter
Parameter | Deskripsi |
ekspresi boolean | Nilai parameter ini adalah ekspresi Boolean. |
Tipe nilai kembali
Tipe Boolean.
Contoh
Periksa apakah nilai bidang request_time kurang dari 100 di semua log. Satuan: detik. Jika ya, fungsi mengembalikan true.
Pernyataan query (Debug)
* | SELECT bool_and(request_time < 100)Hasil query dan analisis

fungsi bool_or
Fungsi bool_or memeriksa apakah ada log yang memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true.
Sintaksis
bool_or(ekspresi boolean)Parameter
Parameter | Deskripsi |
ekspresi boolean | Nilai parameter ini adalah ekspresi Boolean. |
Tipe nilai kembali
Tipe Boolean.
Contoh
Periksa apakah ada log di mana nilai bidang request_time kurang dari 20. Satuan: detik. Jika ya, fungsi mengembalikan true.
Pernyataan query (Debug)
* | SELECT bool_or(request_time < 20)Hasil query dan analisis

fungsi checksum
Fungsi checksum menghitung checksum dari nilai-nilai bidang x.
Sintaksis
checksum(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
Tipe nilai kembali
Tipe string. Hasilnya di-enkode Base64.
Contoh
Pernyataan query (Debug)
* | SELECT checksum(request_method) AS request_methodHasil query dan analisis

fungsi count
Fungsi count menghitung jumlah log.
Sintaksis
Jika menggunakan sintaksis berikut, fungsi menghitung jumlah log.
count(*)Jika menggunakan sintaksis berikut, fungsi menghitung jumlah log, yang setara dengan
count(*).count(1)Jika menggunakan sintaksis berikut, fungsi menghitung jumlah log yang nilainya pada bidang x bukan NULL.
count(x)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
Tipe nilai kembali
Tipe integer.
Contoh
Contoh 1: Hitung jumlah page views (PV) dari sebuah situs web.
Pernyataan query (Debug)
* | SELECT count(*) AS PVHasil query dan analisis

Contoh 2: Hitung jumlah log yang nilainya pada bidang
request_methodbukan NULL.Pernyataan query (Debug)
* | SELECT count(request_method) AS countHasil query dan analisis

fungsi count_if
Fungsi count_if menghitung jumlah log yang memenuhi kondisi tertentu.
Sintaksis
count_if(ekspresi boolean)Parameter
Parameter | Deskripsi |
ekspresi boolean | Nilai parameter ini adalah ekspresi Boolean. |
Tipe nilai kembali
Tipe integer.
Contoh
Hitung jumlah log yang bidang request_uri-nya memiliki nilai dengan akhiran file-0.
Pernyataan query (Debug)
* | SELECT count_if(request_uri like '%file-0') AS countHasil query dan analisis

fungsi geometric_mean
Fungsi geometric_mean menghitung rata-rata geometrik dari nilai-nilai bidang x.
Sintaksis
geometric_mean(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe double, bigint, atau real. |
Tipe nilai kembali
Tipe double.
Contoh
Hitung rata-rata geometrik dari nilai-nilai bidang request_time.
Pernyataan query (Debug)
* | SELECT geometric_mean(request_time) AS timeHasil query dan analisis

fungsi every
Fungsi every memeriksa apakah semua log memenuhi kondisi tertentu. Jika ya, fungsi mengembalikan true. Fungsi ini setara dengan fungsi bool_and.
Sintaksis
every(ekspresi boolean)Parameter
Parameter | Deskripsi |
ekspresi boolean | Nilai parameter ini adalah ekspresi Boolean. |
Tipe nilai kembali
Tipe Boolean.
Contoh
Periksa apakah nilai bidang request_time kurang dari 100 di semua log. Satuan: detik. Jika ya, fungsi mengembalikan true.
Pernyataan query (Debug)
* | SELECT every(request_time < 100)Hasil query dan analisis

fungsi kurtosis
Fungsi kurtosis menghitung kurtosis dari nilai-nilai bidang x.
Sintaksis
kurtosis(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe double atau bigint. |
Tipe nilai kembali
Tipe double.
Contoh
Hitung kurtosis dari nilai-nilai bidang request_time.
Pernyataan query (Debug)
*| SELECT kurtosis(request_time)Hasil query dan analisis

fungsi map_union
Fungsi map_union mengembalikan hasil operasi union pada peta yang ditentukan. Jika suatu kunci ada di beberapa peta input, fungsi secara acak mengembalikan salah satu nilai dari kunci tersebut.
Sintaksis
map_union(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe map. |
Tipe nilai kembali
Tipe map.
Contoh
Lakukan operasi union pada peta bidang etl_context dan secara acak mengembalikan salah satu peta.
Contoh bidang
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" }Pernyataan query
* | SELECT map_union( try_cast(json_parse(etl_context) AS map(varchar, varchar)) )Hasil query dan analisis

fungsi max
Fungsi max mengambil nilai terbesar dari bidang x.
Sintaksis
Jika menggunakan sintaksis berikut, fungsi mengambil nilai terbesar dari bidang x.
max(x)Jika menggunakan sintaksis berikut, fungsi mengambil n nilai terbesar dari bidang x. Fungsi mengembalikan array.
max(x, n)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
n | Nilai parameter ini adalah bilangan bulat positif. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
Contoh 1: Ambil nilai terbesar dari bidang request_time.
Pernyataan query (Debug)
* | SELECT max(request_time) AS max_request_timeHasil query dan analisis

Contoh 2: Ambil 10 nilai terbesar dari bidang request_time.
Pernyataan kueri (Debug)
* | SELECT max(request_time, 10) AS "top 10"Hasil query dan analisis

fungsi max_by
Daftar berikut menunjukkan sintaksis yang didukung oleh fungsi max_by.
Sintaksis
Jika menggunakan sintaksis berikut, fungsi mengambil nilai x yang terkait dengan nilai terbesar dari bidang y.
max_by(x, y)Jika menggunakan sintaksis berikut, fungsi mengambil nilai-nilai x yang terkait dengan n nilai terbesar dari bidang y. Fungsi mengembalikan array.
max_by(x, y, n)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
y | Nilai parameter ini adalah dari tipe data sembarang. |
n | Nilai parameter ini adalah bilangan bulat lebih besar dari 0. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
Contoh 1: Ambil waktu dari pesanan yang memiliki jumlah konsumsi terbesar.
Pernyataan query
* | SELECT max_by(UsageEndTime, PretaxAmount) AS timeHasil query dan analisis

Contoh 2: Ambil metode permintaan dari permintaan yang memiliki tiga nilai terbesar dari bidang request_time.
Pernyataan kueri (Debug)
* | SELECT max_by(request_method, request_time, 3) AS methodHasil query dan analisis

fungsi min
Fungsi min mengambil nilai terkecil dari bidang x.
Sintaksis
Jika menggunakan sintaksis berikut, fungsi mengambil nilai terkecil dari bidang x.
min(x)Jika menggunakan sintaksis berikut, fungsi mengambil n nilai terkecil dari bidang x. Fungsi mengembalikan array.
min(x,n)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
n | Nilai parameter ini adalah bilangan bulat positif. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
fungsi min_by
Daftar berikut menunjukkan sintaksis yang didukung oleh fungsi min_by.
Sintaksis
Jika menggunakan sintaksis berikut, fungsi mengambil nilai x yang terkait dengan nilai terkecil dari bidang y.
min_by(x, y)Jika menggunakan sintaksis berikut, fungsi mengambil nilai-nilai x yang terkait dengan n nilai terkecil dari bidang y. Fungsi mengembalikan array.
min_by(x, y, n)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe data sembarang. |
y | Nilai parameter ini adalah dari tipe data sembarang. |
n | Nilai parameter ini adalah bilangan bulat lebih besar dari 0. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
Contoh 1: Ambil metode permintaan dari permintaan yang memiliki nilai terkecil dari bidang request_time.
Pernyataan kueri (Debug)
* | SELECT min_by(request_method, request_time) AS methodHasil query dan analisis

Contoh 2: Ambil metode permintaan dari permintaan yang memiliki tiga nilai terkecil dari bidang request_time.
Pernyataan kueri (Debug)
* | SELECT min_by(request_method, request_time, 3) AS methodHasil query dan analisis

fungsi skewness
Fungsi skewness menghitung skewness dari nilai-nilai bidang x.
Sintaksis
skewness(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe double atau bigint. |
Tipe nilai kembali
Tipe double.
Contoh
Hitung skewness dari nilai-nilai bidang request_time.
Pernyataan query (Debug)
*| SELECT skewness(request_time) AS skewnessHasil query dan analisis

fungsi sum
Fungsi sum menghitung jumlah dari nilai-nilai bidang x.
Sintaksis
sum(x)Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah dari tipe double, bigint, decimal, atau real. |
Tipe nilai kembali
Sama dengan tipe data nilai parameter.
Contoh
Hitung lalu lintas masuk harian situs web.
Pernyataan kueri (Debug)
* | SELECT date_trunc('hari', __time__) AS waktu, sum(body_bytes_sent) AS body_bytes_sent GROUP BY waktu ORDER BY waktuHasil query dan analisis


