Topik ini menjelaskan sintaksis dasar serta memberikan contoh penggunaan fungsi perkiraan.
Simple Log Service mendukung fungsi perkiraan berikut:
Nama Fungsi | Sintaksis | Deskripsi | Dukungan SQL | Dukungan SPL |
approx_distinct(x) | Menghitung jumlah nilai unik dalam x. Kesalahan standar default adalah 2,3%. | √ | × | |
approx_distinct(x, e) | Menghitung jumlah nilai unik dalam x dan memungkinkan Anda menentukan kesalahan standar kustom. | √ | × | |
approx_percentile(x, persentase) | Mengurutkan x secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Hasilnya merupakan perkiraan, dan stabilitas serta konsistensinya tidak dijamin. | √ | × | |
approx_percentile(x, array[persentase01, persentase02...]) | Mengurutkan x secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu, seperti persentase01 dan persentase02. Hasilnya merupakan perkiraan, dan stabilitas serta konsistensinya tidak dijamin. | √ | × | |
approx_percentile(x, bobot, persentase) | Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Hasilnya merupakan perkiraan, dan stabilitas serta konsistensinya tidak dijamin. | √ | × | |
approx_percentile(x, bobot, array[persentase01, persentase02...]) | Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu, seperti persentase01 dan persentase02. Hasilnya merupakan perkiraan, dan stabilitas serta konsistensinya tidak dijamin. | √ | × | |
approx_percentile(x, bobot, persentase, akurasi) | Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Memungkinkan Anda menetapkan akurasi nilai pengembalian. Hasilnya merupakan perkiraan, dan stabilitas serta konsistensinya tidak dijamin. | √ | × | |
numeric_histogram(bucket, x) | Menghitung histogram perkiraan untuk x berdasarkan jumlah bucket (kolom histogram). Hasilnya dikembalikan dalam format JSON. | √ | × | |
numeric_histogram(bucket, x, bobot) | Menghitung histogram perkiraan untuk x berdasarkan jumlah bucket (kolom histogram). Hasilnya dikembalikan dalam format JSON. Memungkinkan Anda menetapkan bobot untuk x. | √ | × | |
numeric_histogram_u(bucket, x) | Menghitung histogram perkiraan untuk x berdasarkan jumlah bucket (kolom histogram). Hasilnya dikembalikan dalam format multi-baris dan multi-kolom. | √ | × | |
approx_most_frequent(k, x) | Menghitung frekuensi perkiraan dari | √ | × |
fungsi approx_distinct
Fungsi approx_distinct menghitung jumlah nilai unik dalam x.
Sintaksis
Menghitung jumlah nilai unik dalam x. Kesalahan standar default adalah 2,3%.
approx_distinct(x)Menghitung jumlah nilai unik dalam x dengan kesalahan standar kustom.
approx_distinct(x, e)
Parameter
Parameter | Deskripsi |
x | Nilainya bisa berupa tipe data apa pun. |
e | Kesalahan standar kustom. Nilainya harus dalam rentang [0,0115, 0,26]. |
Tipe Nilai Pengembalian
bigint
Contoh
Contoh 1: Gunakan fungsi count untuk menghitung jumlah tampilan halaman (PV) dan fungsi approx_distinct untuk menghitung jumlah pengunjung unik (UV) berdasarkan nilai unik dari bidang client_ip. Kesalahan standar adalah 2,3%.
Pernyataan Kueri
* |SELECT count(*) AS PV, approx_distinct(client_ip) AS UVHasil Kueri dan Analisis

Contoh 2: Gunakan fungsi count untuk menghitung PV dan fungsi approx_distinct untuk menghitung jumlah UV berdasarkan nilai unik dari bidang client_ip. Kesalahan standar kustom adalah 10%.
Pernyataan Kueri
* |SELECT count(*) AS PV, approx_distinct(client_ip,0.1) AS UVHasil Kueri dan Analisis

fungsi approx_percentile
Fungsi approx_percentile mengurutkan x secara menaik dan mengembalikan nilai perkiraan pada persentase tertentu. Hasilnya merupakan perkiraan, sehingga stabilitas dan konsistensinya tidak dijamin.
Sintaksis
Mengurutkan x secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Nilai pengembalian adalah double.
approx_percentile(x, persentase)Mengurutkan x secara menaik dan mengembalikan nilai perkiraan dari x pada beberapa persentase tertentu, seperti persentase01 dan persentase02. Nilai pengembalian adalah array(double,double).
approx_percentile(x, array[persentase01, persentase02...])Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Nilai pengembalian adalah double.
approx_percentile(x, bobot, persentase)Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada beberapa persentase tertentu, seperti persentase01 dan persentase02. Nilai pengembalian adalah array(double,double).
approx_percentile(x, bobot, array[persentase01, persentase02...])Mengurutkan produk dari x dan bobotnya secara menaik dan mengembalikan nilai perkiraan dari x pada persentase tertentu. Nilai pengembalian adalah double. Anda juga dapat menetapkan akurasi nilai pengembalian.
approx_percentile(x, bobot, persentase, akurasi)
Parameter
Parameter | Deskripsi |
x | Nilainya harus bertipe double. |
persentase | Nilai persentase. Nilainya harus dalam rentang [0, 1]. |
akurasi | Akurasi. Nilainya harus dalam rentang (0, 1). |
bobot | Bobot. Nilainya harus bilangan bulat lebih besar dari 1. Jika Anda menetapkan bobot, sistem akan mengurutkan data berdasarkan produk dari x dan bobot. |
Tipe Nilai Pengembalian
double atau array(double,double)
Contoh
Contoh 1: Mengurutkan kolom request_time dan mengembalikan nilai perkiraan dari bidang request_time pada persentil ke-50.
Pernyataan Kueri
*| SELECT approx_percentile(request_time,0.5)Hasil Kueri dan Analisis

Contoh 2: Urutkan kolom request_time dan kembalikan nilai request_time pada persentil ke-10, ke-20, dan ke-70.
Pernyataan Kueri
*| SELECT approx_percentile(request_time,array[0.1,0.2,0.7])Hasil Kueri dan Analisis

Contoh 3: Contoh ini mengurutkan kolom request_time berdasarkan produk dari nilai request_time dan bobotnya, lalu mengembalikan nilai perkiraan persentil ke-50 dari bidang request_time. Bobotnya adalah 100 jika nilai request_time kurang dari 20, dan 10 jika sebaliknya.
Pernyataan Kueri
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, 0.5 )Hasil Kueri dan Analisis

Contoh 4: Urutkan kolom request_time berdasarkan produk dari request_time dan bobotnya, lalu kembalikan nilai perkiraan dari request_time pada persentil ke-80 dan ke-90. Bobotnya adalah 100 jika request_time kurang dari 20. Jika tidak, bobotnya adalah 10.
Pernyataan Kueri
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, array [0.8,0.9] )Hasil Kueri dan Analisis

Contoh 5: Urutkan kolom request_time berdasarkan produk dari request_time dan bobotnya, lalu kembalikan nilai perkiraan dari bidang request_time pada persentil ke-50 dengan akurasi 0,2, di mana bobotnya adalah 100 jika request_time kurang dari 20 dan 10 jika sebaliknya.
Pernyataan Kueri
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, 0.5, 0.2 )Hasil Kueri dan Analisis

fungsi numeric_histogram
Fungsi numeric_histogram menghitung histogram perkiraan untuk x. Hasilnya dikembalikan dalam format JSON.
Sintaksis
Menghitung histogram perkiraan untuk x berdasarkan jumlah bucket tertentu.
numeric_histogram(bucket, x)Menghitung histogram perkiraan untuk x berdasarkan jumlah bucket tertentu. Anda juga dapat menentukan bobot untuk x.
numeric_histogram(bucket, x, bobot)
Parameter
Parameter | Deskripsi |
bucket | Jumlah kolom dalam histogram. Nilainya harus bertipe bigint. |
x | Nilainya harus bertipe double. |
bobot | Bobot. Nilainya harus bilangan bulat lebih besar dari 0. Jika Anda menetapkan bobot, sistem akan mengelompokkan data berdasarkan produk dari x dan bobot. |
Tipe Nilai Pengembalian
JSON
Contoh
Contoh 1: Hitung histogram perkiraan durasi permintaan untuk permintaan POST.
Pernyataan Kueri
request_method:POST | SELECT numeric_histogram(10,request_time)Hasil Kueri dan Analisis

Contoh 2: Hitung histogram perkiraan berbobot dari durasi permintaan untuk permintaan POST. Bobot didasarkan pada nilai request_time.
Pernyataan Kueri
request_method:POST| SELECT numeric_histogram(10, request_time,case when request_time<20 then 100 else 10 end)Hasil Kueri dan Analisis

fungsi numeric_histogram_u
Fungsi numeric_histogram_u menghitung histogram perkiraan untuk x. Hasilnya dikembalikan dalam format multi-baris dan multi-kolom.
Sintaksis
numeric_histogram_u(bucket, x)Parameter
Parameter | Deskripsi |
bucket | Jumlah kolom dalam histogram. Nilainya harus bertipe bigint. |
x | Nilainya harus bertipe double. |
Tipe Nilai Pengembalian
double
Contoh
Hitung histogram perkiraan durasi permintaan untuk permintaan POST.
Pernyataan Kueri
request_method:POST | select numeric_histogram_u(10,request_time)Hasil Kueri dan Analisis

fungsi approx_most_frequent
Menghitung frekuensi perkiraan dari k nilai paling sering di kolom x.
Sintaksis
approx_most_frequent(k, x)Parameter
Parameter | Deskripsi |
k | Jumlah nilai paling sering yang akan dikembalikan. Sebagai contoh, nilai 5 menunjukkan bahwa fungsi mengembalikan frekuensi perkiraan dari 5 nilai paling sering teratas. |
x | Nilainya harus bertipe varchar. |
Tipe nilai pengembalian
map(varchar, bigint)
Contoh
Ambil tiga nilai paling sering dalam bidang content.
Data Sampel
content: 'A' 'B' 'A' 'C' 'A' 'B' 'C' 'D' 'E'Pernyataan Kueri
select approx_most_frequent(3, content)Output
