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 int opsional yang menentukan akurasi estimasi yang diminta. Lihat di bawah untuk nilai yang didukung. Jika tidak ditentukan, nilai default 1 akan digunakan.

Mengembalikan

Mengembalikan perkiraan jumlah nilai yang berbeda dari Expr dalam grup.

Contoh

PageViewLog | summarize countries=dcount(country) by continent

D count.

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:

hll error distribution.