Fungsi agregat menghitung satu nilai dari sekumpulan nilai. Topik ini menjelaskan sintaks dasar fungsi agregat dan memberikan contoh penggunaannya.
Simple Log Service mendukung fungsi agregat berikut.
Parameter | Sintaks | Deskripsi | Dukungan SQL | Dukungan SPL |
arbitrary(x) | Mengembalikan nilai non-NULL sembarang dari x. | √ | × | |
avg(x) | Menghitung rata-rata aritmetika dari x. | √ | × | |
bitwise_and_agg(x) | Mengembalikan hasil operasi AND bitwise dari semua nilai dalam x. | √ | × | |
bitwise_or_agg(x) | Mengembalikan hasil operasi OR bitwise dari semua nilai dalam x. | √ | × | |
bool_and(boolean expression) | Mengembalikan true jika semua log memenuhi kondisi. Fungsi | √ | × | |
bool_or(boolean expression) | Mengembalikan true jika setidaknya satu log memenuhi kondisi. | √ | × | |
checksum(x) | Menghitung checksum dari x. | √ | × | |
count(*) | Mengembalikan jumlah total log. | √ | × | |
count(1) | Mengembalikan jumlah total log, yang setara dengan | √ | × | |
count(x) | Mengembalikan jumlah log di mana nilai x bukan NULL. | √ | × | |
count_if(boolean expression) | Mengembalikan jumlah log yang memenuhi kondisi tertentu. | √ | × | |
every(boolean expression) | Mengembalikan true jika semua log memenuhi kondisi. Fungsi | √ | × | |
geometric_mean(x) | Menghitung rata-rata geometrik dari x. | √ | × | |
kurtosis(x) | Menghitung kurtosis dari x. | √ | × | |
map_union(x) | Mengembalikan gabungan (union) peta dalam satu kolom. Jika suatu kunci ada di beberapa peta, nilai sembarang untuk kunci tersebut dipilih. | √ | × | |
max(x) | Mengembalikan nilai maksimum dalam x. | √ | × | |
max(x, n) | Mengembalikan n nilai terbesar dalam x sebagai array. | √ | × | |
max_by(x, y) | Mengembalikan nilai x yang terkait dengan nilai maksimum y. | √ | × | |
max_by(x, y, n) | Mengembalikan array nilai x yang sesuai dengan n nilai terbesar dari y. | √ | × | |
min(x) | Mengembalikan nilai minimum dalam x. | √ | × | |
min(x, n) | Mengembalikan n nilai terkecil dalam x sebagai array. | √ | × | |
min_by(x, y) | Mengembalikan nilai x yang terkait dengan nilai minimum y. | √ | × | |
min_by(x, y, n) | Mengembalikan array nilai x yang sesuai dengan n nilai terkecil dari y. | √ | × | |
skewness(x) | Menghitung skewness dari x. | √ | × | |
sum(x) | Menghitung jumlah dari x. | √ | × |
Fungsi sembarang
Fungsi sembarang mengembalikan nilai non-null acak dari ekspresi x.
Sintaks
arbitrary(x)Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
Tipe kembalian
Sesuai dengan tipe data ekspresi input.
Contoh
Mengembalikan nilai non-null acak dari field request_method.
Pernyataan kueri (Debug)
* | SELECT arbitrary(request_method) AS request_methodKolom request_method mengembalikan nilai seperti
GET.
Fungsi avg
Fungsi avg mengembalikan rata-rata nilai dalam x.
Sintaks
avg(x)Parameter
Parameter | Deskripsi |
x | Kolom atau ekspresi yang akan dirata-ratakan. Nilainya harus bertipe double, bigint, decimal, atau real. |
Tipe nilai kembalian
Nilai bertipe double.
Contoh
Mengembalikan proyek dengan latensi rata-rata lebih dari 1.000 mikrodetik.
Pernyataan kueri (Debug)
method: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000Kueri mengembalikan catatan dengan avg_latency sebesar
3223.4162679425835dan nama Project yang dimulai dengandatalab-14.
Fungsi bitwise_and_agg
Fungsi bitwise_and_agg mengembalikan hasil operasi AND bitwise dari semua nilai dalam x.
Sintaks
bitwise_and_agg(x)Parameter
Parameter | Deskripsi |
x | Nilai bigint. |
Tipe nilai kembalian
Nilai bigint.
Contoh
Menjalankan operasi AND bitwise pada semua nilai dalam field status.
Pernyataan kueri (Debug)
* | SELECT bitwise_and_agg(status)Kueri mengembalikan satu kolom bernama
_col0dengan nilai0.
Fungsi bitwise_or_agg
Fungsi bitwise_or_agg mengembalikan hasil operasi OR bitwise dari semua nilai dalam x.
Sintaks
bitwise_or_agg(x)Parameter
Parameter | Deskripsi |
x | Nilai bigint. |
Tipe kembalian
Nilai bigint.
Contoh
Menjalankan operasi OR bitwise pada semua nilai field request_time.
Pernyataan kueri dan analisis (Debug)
* | SELECT bitwise_or_agg(request_length)Hasil kueri dan analisis dikembalikan sebagai satu kolom
_col0, dengan nilai16383.
Fungsi bool_and
Fungsi bool_and mengembalikan true jika ekspresi boolean bernilai true untuk semua log. Fungsi ini setara dengan fungsi every.
Sintaks
bool_and(boolean expression)Parameter
Parameter | Deskripsi |
boolean expression | Ekspresi boolean yang dievaluasi. |
Tipe nilai kembalian
boolean
Contoh
Contoh ini memeriksa apakah nilai request_time untuk semua log kurang dari 100.
Pernyataan kueri dan analisis (Debug)
* | SELECT bool_and(request_time < 100)Hasil kueri dan analisis adalah
true, yang menunjukkan bahwa nilairequest_timesemua log kurang dari 100.
Fungsi bool_or
Fungsi bool_or mengembalikan true jika ekspresi boolean bernilai true untuk setidaknya satu log.
Sintaks
bool_or(boolean expression)Parameter
Parameter | Deskripsi |
boolean expression | Ekspresi boolean. |
Tipe nilai kembalian
boolean
Contoh
Untuk memeriksa apakah request_time untuk salah satu log kurang dari 20:
Pernyataan kueri dan analisis (Debug)
* | SELECT bool_or(request_time < 20)Hasil kueri dan analisis mengembalikan
trueuntuk kolom_col0, yang menunjukkan bahwa log berisi catatan di mana request_time kurang dari 20.
Fungsi checksum
Fungsi checksum menghitung checksum dari x.
Sintaks
checksum(x)Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
Tipe nilai kembalian
String yang dikodekan Base64.
Contoh
Pernyataan kueri (Debug)
* | SELECT checksum(request_method) AS request_methodChecksum dari field request_method adalah
NDXFdgnd8GE=.
Fungsi count
Fungsi count menghitung jumlah log.
Sintaks
Menghitung jumlah total log.
count(*)Mengembalikan jumlah total log. Ini setara dengan
count(*).count(1)Menghitung log di mana x bukan NULL.
count(x)
Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
Tipe nilai kembalian
Bilangan bulat.
Contoh
Contoh 1: Menghitung jumlah tampilan halaman website.
Pernyataan kueri (Debug)
* | SELECT count(*) AS PVHasil kueri dan analisis: Tabel hasil berisi kolom PV dengan nilai
2009.
Contoh 2: Menghitung log di mana field
request_methodtidak null.Pernyataan kueri (Debug)
* | SELECT count(request_method) AS countHasil kueri dan analisis: Tabel hasil berisi kolom count dengan nilai
1954.
Fungsi count_if
Fungsi count_if menghitung jumlah log yang memenuhi kondisi tertentu.
Sintaks
count_if(boolean expression)Parameter
Parameter | Deskripsi |
boolean expression | Kondisi yang dievaluasi. |
Tipe kembalian
Jumlah log yang memenuhi kondisi.
Contoh
Menghitung jumlah entri log di mana nilai field request_uri diakhiri dengan file-0.
Pernyataan kueri dan analisis (debug)
* | SELECT count_if(request_uri like '%file-0') AS countHasil kueri dan analisis
Fungsi geometric_mean
Fungsi geometric_mean menghitung rata-rata geometrik dari x.
Sintaks
geometric_mean(x)Parameter
Parameter | Deskripsi |
x | Nilai bertipe double, bigint, atau real. |
Tipe nilai kembalian
Mengembalikan nilai double.
Contoh
Menghitung rata-rata geometrik waktu permintaan.
Pernyataan kueri dan analisis (Debug)
* | SELECT geometric_mean(request_time) AS timeHasil kueri dan analisis menunjukkan kolom time dengan nilai
39.443123208882308.
Setiap fungsi
Fungsi every mengembalikan true jika ekspresi boolean bernilai true untuk semua log. Fungsi ini setara dengan fungsi bool_and.
Sintaks
every(boolean expression)Parameter
Parameter | Deskripsi |
boolean expression | Ekspresi yang mengembalikan nilai boolean untuk setiap log. |
Tipe nilai kembalian
Mengembalikan nilai boolean.
Contoh
Contoh ini memeriksa apakah nilai request_time dalam setiap log kurang dari 100.
Pernyataan kueri dan analisis (Debug)
* | SELECT every(request_time < 100)Hasil kueri dan analisis
Fungsi kurtosis
Menghitung kurtosis dari x.
Sintaks
kurtosis(x)Parameter
Parameter | Deskripsi |
x | Nilainya harus bertipe double atau bigint. |
Tipe kembalian
double
Contoh
Menghitung kurtosis dari field request_time.
Pernyataan kueri (Debug)
*| SELECT kurtosis(request_time)Hasil kueri dan analisis
kurtosis -3.0006998250171186
Fungsi map_union
Fungsi map_union mengembalikan gabungan semua peta dalam satu kolom. Jika kunci yang sama ada di beberapa peta input, nilai untuk kunci tersebut dalam peta hasil dipilih secara non-deterministik dari salah satu input.
Sintaks
map_union(x)Parameter
Parameter | Deskripsi |
x | Kolom bertipe map. |
Tipe nilai kembalian
Mengembalikan satu nilai bertipe map.
Contoh
Contoh ini menggabungkan nilai peta dari field etl_context menjadi satu peta.
Field contoh
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 kueri
* | SELECT map_union( try_cast(json_parse(etl_context) AS map(varchar, varchar)) )Hasil kueri dan analisis: Setelah pernyataan kueri dijalankan, kolom hasil diberi nama
_col0, dan nilainya adalah peta pasangan kunci-nilai yang diurai dari etl_context, berisi field seperticonsumer_group,shard_id,project,logstore, danconsumer, serta nilai-nilai yang sesuai.
Fungsi max
Fungsi max mengembalikan nilai maksimum dari x.
Sintaks
Mengembalikan nilai maksimum dari x.
max(x)Mengembalikan array berisi n nilai terbesar dari x.
max(x, n)
Parameter
Parameter | Deskripsi |
x | Ekspresi apa pun. |
n | Bilangan bulat positif. |
Tipe nilai kembalian
Sama dengan tipe data ekspresi input.
Contoh
Contoh 1: Menemukan waktu permintaan maksimum.
Pernyataan kueri (Debug)
* | SELECT max(request_time) AS max_request_timeHasil kueri dan analisis: Nilai
max_request_timeadalah80.0.
Contoh 2: Menemukan 10 waktu permintaan teratas.
Pernyataan kueri (Debug)
* | SELECT max(request_time, 10) AS "top 10"Hasil kueri dan analisis: Kueri mengembalikan
[80.0,80.0,80.0,80.0,80.0,79.0,79.0,79.0,78.0,78.0]untuk kolom top 10. Array berisi 10 nilairequest_timeterbesar dalam urutan menurun.
Fungsi max_by
Fungsi max_by mendukung dua sintaks berikut.
Sintaks
Mengembalikan nilai x untuk nilai maksimum y.
max_by(x, y)Mengembalikan array nilai x untuk n nilai terbesar dari y.
max_by(x, y, n)
Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
y | Ekspresi dengan tipe data apa pun. |
n | Bilangan bulat positif. |
Tipe nilai kembalian
Sama dengan tipe data x.
Contoh
Contoh 1: Menemukan waktu pesanan dengan jumlah sebelum pajak tertinggi.
Pernyataan kueri dan analisis
* | SELECT max_by(UsageEndTime, PretaxAmount) AS timeHasil kueri dan analisis: Kolom time mengembalikan
1625731025.
Contoh 2: Menemukan metode permintaan untuk tiga permintaan dengan waktu permintaan terlama.
Pernyataan kueri dan analisis (debug)
* | SELECT max_by(request_method, request_time, 3) AS methodHasil kueri dan analisis: Nilai method adalah
["POST","POST","POST"], yang menunjukkan bahwa metode untuk tiga permintaan terbaru yang diurutkan berdasarkanrequest_timesemuanya POST.
Fungsi min
Fungsi min mengembalikan nilai minimum dalam x.
Sintaks
Mengembalikan nilai minimum dalam x.
min(x)Mengembalikan n nilai terkecil dalam x sebagai array.
min(x,n)
Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
n | Bilangan bulat positif. |
Tipe nilai kembalian
Sama dengan tipe data ekspresi input.
Contoh
Contoh 1: Menemukan waktu permintaan minimum.
Pernyataan kueri dan analisis (Debug)
* | SELECT min(request_time) AS min_request_timeHasil kueri dan analisis mengembalikan kolom bernama min_request_time dengan nilai
10.0.
Contoh 2: Menemukan 10 waktu permintaan terkecil.
Pernyataan kueri dan analisis (Debug)
* | SELECT min(request_time, 10)Hasil kueri dan analisis mengembalikan kolom bernama
_col0dengan nilai[10.0,10.0,10.0,10.0,10.0,11.0,12.0,12.0,13.0,13.0].
Fungsi min_by
Fungsi min_by memiliki dua sintaks berikut.
Sintaks
Mengembalikan nilai x untuk nilai minimum y.
min_by(x, y)Mengembalikan array nilai x untuk n nilai terkecil dari y.
min_by(x, y, n)
Parameter
Parameter | Deskripsi |
x | Ekspresi dengan tipe data apa pun. |
y | Ekspresi dengan tipe data apa pun. |
n | Bilangan bulat positif. |
Tipe nilai kembalian
Sama dengan tipe data parameter x.
Contoh
Contoh 1: Menemukan metode permintaan untuk permintaan dengan waktu permintaan minimum.
Pernyataan kueri dan analisis (Debug)
* | SELECT min_by(request_method, request_time) AS methodHasil kueri dan analisis: Kolom method mengembalikan
GET.
Contoh 2: Menemukan metode permintaan untuk tiga permintaan dengan waktu permintaan terkecil.
Pernyataan kueri dan analisis (Debug)
* | SELECT min_by(request_method, request_time, 3) AS methodHasil kueri dan analisis.
Fungsi skewness
Fungsi skewness menghitung skewness dari ekspresi x.
Sintaks
skewness(x)Parameter
Parameter | Deskripsi |
x | Ekspresi yang mengevaluasi ke tipe double atau bigint. |
Tipe nilai kembalian
double
Contoh
Menghitung skewness dari nilai dalam field request_time.
Pernyataan kueri dan analisis (Debug)
*| SELECT skewness(request_time) AS skewnessHasil kueri dan analisis: Nilai skewness adalah
0.00042944441602043965.
Fungsi sum
Fungsi sum menjumlahkan nilai dalam ekspresi x.
Sintaks
sum(x)Parameter
Parameter | Deskripsi |
x | Ekspresi yang mengevaluasi ke tipe double, bigint, decimal, atau real. |
Tipe nilai kembalian
Sama dengan tipe data ekspresi input.
Contoh
Menghitung traffic harian sebuah website.
Pernyataan kueri dan analisis (debug)
* | SELECT date_trunc('day', __time__) AS time, sum(body_bytes_sent) AS body_bytes_sent GROUP BY time ORDER BY timeHasil kueri dan analisis: Setelah pernyataan kueri dan analisis dijalankan, tabel hasil statistik yang diagregasi per hari dikembalikan, berisi jumlah
body_bytes_sentuntuk total lima hari dari 2023-09-19 hingga 2023-09-23.