dcount() (fungsi agregasi)
Mengembalikan perkiraan untuk jumlah nilai berbeda yang diambil oleh ekspresi skalar dalam grup ringkasan.
Catatan
Fungsi agregasi dcount() terutama berguna untuk memperkirakan kardinalitas set besar. Fungsi tersebut mengorbankan performa untuk akurasi, dan mungkin mengembalikan hasil yang bervariasi di antara eksekusi. Urutan input dapat memengaruhi output-nya.
Sintaks
dcount(Expr[,Accuracy])
Argumen
- Expr: Ekspresi skalar yang nilai-nilai berbedanya harus dihitung.
- Accuracy: Harfiah
intopsional yang menentukan akurasi estimasi yang diminta. Lihat di bawah untuk nilai yang didukung. Jika tidak ditentukan, nilai default1akan digunakan.
Mengembalikan
Mengembalikan perkiraan jumlah nilai yang berbeda dari Expr dalam grup.
Contoh
PageViewLog | summarize countries=dcount(country) by continent
Mendapatkan jumlah tepat nilai yang berbeda dari V dikelompokkan menurut G.
T | summarize by V, G | summarize count() by G
Perhitungan ini membutuhkan sejumlah besar memori internal, karena nilai yang berbeda dari V dikalikan dengan jumlah nilai yang berbeda dari G.
Hal ini dapat mengakibatkan kesalahan memori atau waktu eksekusi yang besar.
dcount()memberikan alternatif yang cepat dan dapat diandalkan:
T | summarize dcount(V) by G | count
Akurasi estimasi
Fungsi agregat dcount() menggunakan varian algoritmma HyperLogLog (HLL), yang melakukan estimasi stokastik dari kardinalitas set. Algoritma ini menyediakan "kenop" yang dapat digunakan untuk menyeimbangkan akurasi dan waktu eksekusi per ukuran memori:
| Akurasi | Kesalahan (%) | Jumlah entri |
|---|---|---|
| 0 | 1.6 | 212 |
| 1 | 0.8 | 214 |
| 2 | 0.4 | 216 |
| 3 | 0.28 | 217 |
| 4 | 0.2 | 218 |
Catatan
Kolom "jumlah entri" adalah jumlah penghitung 1 byte dalam implementasi HLL.
Algoritma ini mencakup beberapa ketentuan untuk melakukan penghitungan sempurna (zero error), jika kardinalitas set berukuran cukup kecil:
- Ketika tingkat akurasi adalah
1, 1000 nilai dikembalikan - Ketika tingkat akurasi adalah
2, 8000 nilai dikembalikan
Batas kesalahan bersifat probabilistik, bukan batas teoritis. Nilainya adalah simpangan baku dari distribusi kesalahan (sigma), dan 99,7% estimasi akan memiliki kesalahan relatif di bawah 3 x sigma.
Gambar berikut menunjukkan fungsi distribusi peluang dari kesalahan estimasi relatif, dalam persentase, untuk semua pengaturan akurasi yang didukung: