Bagikan melalui


percentilew(), percentilesw() (fungsi agregasi)

Fungsi ini percentilew() menghitung perkiraan tertimbang untuk persentil peringkat terdekat yang ditentukan dari populasi yang ditentukan oleh expr. percentilesw() berfungsi mirip dengan percentilew(). Namun, percentilesw() dapat menghitung beberapa nilai persentil tertimbang sekaligus, yang lebih efisien daripada menghitung setiap nilai persentil tertimbang secara terpisah.

Persentil tertimbang menghitung persentil dalam himpunan data dengan memberikan bobot pada setiap nilai dalam himpunan data input. Dalam metode ini, setiap nilai dianggap diulang beberapa kali sama dengan beratnya, yang kemudian digunakan untuk menghitung persentil. Dengan memberikan lebih penting untuk nilai tertentu, persentil tertimbang memberikan cara untuk menghitung persentil dengan cara "tertimbang".

Untuk menghitung persentil yang tidak tertahankan, lihat persentil().

Catatan

Fungsi ini digunakan bersama dengan ringkasan operator.

Sintaks

percentilew(persentil expr, weightExpr, )

percentilesw(persentil expr, weightExpr, )

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
expr string ✔️ Ekspresi yang digunakan untuk perhitungan agregasi.
weightExpr long ✔️ Bobot untuk memberikan setiap nilai.
persentil int atau long ✔️ Konstanta yang menentukan persentil.
persentil int atau long ✔️ Satu atau beberapa persentil yang dipisahkan koma.

Mengembalikan

Mengembalikan tabel dengan perkiraan kedaluwarsa persentil yang ditentukan dalam grup, masing-masing dalam kolom terpisah.

Catatan

Untuk mengembalikan persentil dalam satu kolom, lihat Mengembalikan persentil sebagai array.

Contoh

Menghitung persentil tertimbang

Anggaplah Anda berulang kali mengukur waktu (Durasi) yang dibutuhkan untuk menyelesaikan suatu tindakan. Daripada mencatat setiap nilai pengukuran, catat setiap nilai Durasi, yang dibulatkan menjadi 100 mdtk, dan frekuensi kemunculan nilai yang dibulatkan (BucketSize).

Gunakan summarize percentilesw(Duration, BucketSize, ...) untuk menghitung persentil tertentu dengan cara yang "terukur". Perlakukan setiap nilai Durasi seolah-olah waktu tersebut diulang BucketSize kali dalam input, tanpa benar-benar perlu mematerialisasi catatan tersebut.

Contoh berikut menunjukkan persentil tertimbang. Menggunakan serangkaian nilai latensi berikut dalam milidetik: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Untuk mengurangi bandwidth dan penyimpanan, lakukan pra-agregasi ke wadah berikut: { 10, 20, 30, 40, 50, 100 }. Hitung jumlah peristiwa di setiap bucket untuk membuat tabel berikut:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

Tabel menampilkan:

  • Delapan peristiwa dalam bucket 10 mdtk (sesuai dengan subset { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Enam peristiwa dalam bucket 20 mdtk (sesuai dengan subset { 12, 12, 15, 15, 15, 18 })
  • Tiga peristiwa dalam bucket 30 mdtk (sesuai dengan subset { 21, 22, 26 })
  • Satu peristiwa dalam bucket 40 mdtk (sesuai dengan subset { 35 })

Saat ini, data asli tidak lagi tersedia. Hanya jumlah peristiwa di setiap bucket. Untuk menghitung persentil dari data ini, gunakan fungsi percentilesw(). Untuk persentil 50, 75, dan 99,9, gunakan kueri berikut:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

Hasil

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Mengembalikan persentil sebagai array

Alih-alih mengembalikan nilai dalam kolom individual, gunakan percentilesw_array() fungsi untuk mengembalikan persentil dalam satu kolom jenis array dinamis.

Sintaks

percentilesw_array(persentil expr, weightExpr, )

Parameter

Nama Tipe Wajib Deskripsi
expr string ✔️ Ekspresi yang digunakan untuk perhitungan agregasi.
persentil int, long, atau dynamic ✔️ Satu atau beberapa persentil yang dipisahkan koma atau array dinamis persentil. Setiap persentil dapat berupa bilangan bulat atau nilai panjang.
weightExpr long ✔️ Bobot untuk memberikan setiap nilai.

Mengembalikan

Mengembalikan perkiraan untuk kedaluwarsa persentil yang ditentukan dalam grup sebagai kolom tunggal dari jenis array dinamis.

Contoh

Persentil yang dipisahkan koma

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

Hasil

percentile_LatencyBucket
[20, 20, 40]

Array dinamis persentil

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

Hasil

percentile_LatencyBucket
[20, 20, 40]