Bagikan melalui


percentile(), percentiles() (aggregation function)

Fungsi ini percentile() menghitung perkiraan untuk persentil peringkat terdekat yang ditentukan dari populasi yang ditentukan oleh expr. Keakuratan tergantung pada kepadatan penduduk di wilayah persentil.

percentiles() berfungsi mirip dengan percentile(). Namun, percentiles() dapat menghitung beberapa nilai persentil sekaligus, yang lebih efisien daripada menghitung setiap nilai persentil secara terpisah.

Untuk menghitung persentil tertimbang, lihat percentilesw().

Catatan

Fungsi ini digunakan bersama dengan ringkasan operator.

Sintaks

percentile(persentil expr, )

percentiles(persentil expr, )

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
expr string ✔️ Ekspresi yang digunakan untuk perhitungan agregasi.
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 tunggal

Contoh berikut menunjukkan nilai DamageProperty yang lebih besar dari 95% dari set sampel dan lebih kecil dari 5% dari kumpulan sampel.

StormEvents | summarize percentile(DamageProperty, 95) by State

Hasil

Tabel hasil yang ditampilkan hanya menyertakan 10 baris pertama.

Provinsi percentile_DamageProperty_95
ATLANTIK SELATAN 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
SAMOA AMERIKA 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Menghitung beberapa persentil

Contoh berikut menunjukkan nilai DamageProperty yang dihitung secara bersamaan menggunakan 5, 50 (median) dan 95.

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

Hasil

Tabel hasil yang ditampilkan hanya menyertakan 10 baris pertama.

Provinsi percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIK SELATAN 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
SAMOA AMERIKA 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Mengembalikan persentil sebagai array

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

Sintaks

percentiles_array(persentil expr, )

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.

Mengembalikan

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

Contoh

Persentil yang dipisahkan koma

Beberapa persentil dapat diperoleh sebagai array dalam satu kolom dinamis, bukan di beberapa kolom seperti dengan persentil().

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

Hasil

Tabel hasil hanya akan menampilkan 10 baris pertama.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Array dinamis persentil

Persentil untuk percentiles_array dapat ditentukan dalam array dinamis bilangan bulat atau angka floating-point. Larik harus bersifat konstan tetapi tidak harus literal.

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

Hasil

Tabel hasil hanya akan menampilkan 10 baris pertama.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Persentil peringkat terdekat

Persentil ke-P (0 <P<= 100) dari daftar nilai yang diurutkan, diurutkan dalam urutan naik, adalah nilai terkecil dalam daftar. Persentase P pada data kurang atau sama dengan nilai persentil P-th (dari artikel Wikipedia tentang persentil).

Tentukan persentil 0-th ke anggota terkecil dari populasi.

Catatan

Mengingat sifat perhitungan perkiraan, nilai sebenarnya yang ditampilkan mungkin bukan anggota populasi. Definisi peringkat terdekat berarti P=50 tidak sesuai dengan definisi interpolatif dari median. Ketika mengevaluasi pentingnya perbedaan ini untuk aplikasi tertentu, ukuran populasi dan kesalahan estimasi harus dihitung.

Kesalahan estimasi dalam persentil

Agregat persentil memberikan nilai perkiraan menggunakan T-Digest.

Catatan

  • Batas pada kesalahan estimasi bervariasi sesuai nilai persentil yang diminta. Akurasi terbaik adalah di kedua ujung skala [0..100]. Persentil 0 dan 100 adalah nilai minimum dan maksimum yang tepat dari distribusi. Akurasi secara bertahap menurun hingga ke tengah skala. Akurasi paling buruk ada di median and dibatasi sebesar 1%.
  • Batas kesalahan dilihat di peringkat, bukan di nilai. Misalkan persentil (X, 50) menampilkan nilai Xm. Perkiraan tersebut menjamin bahwa minimal 49% dan paling banyak 51% dari nilai X kurang atau sama dengan Xm. Tidak ada batasan teoritis pada perbedaan antara Xm dan nilai median sebenarnya dari X.
  • Estimasi tersebut terkadang dapat menghasilkan nilai yang tepat tetapi tidak ada kondisi baku untuk menentukan kapan itu akan terjadi.