Bagikan melalui


hll() (fungsi agregasi)

Fungsi ini hll() adalah cara untuk memperkirakan jumlah nilai unik dalam sekumpulan nilai. Ini dilakukan dengan menghitung hasil perantara untuk agregasi dalam operator ringkasan untuk sekelompok data menggunakan dcount fungsi .

Baca tentang algoritma yang mendasari (HyperLogLog) dan akurasi estimasi.

Catatan

Fungsi ini digunakan bersama dengan ringkasan operator.

Tip

Penting

Hasil hll(), hll_if(), dan hll_merge() dapat disimpan dan kemudian diambil. Misalnya, Anda mungkin ingin membuat ringkasan pengguna unik harian, yang kemudian dapat digunakan untuk menghitung jumlah mingguan. Namun, representasi biner yang tepat dari hasil ini dapat berubah dari waktu ke waktu. Tidak ada jaminan bahwa fungsi-fungsi ini akan menghasilkan hasil yang identik untuk input yang identik, dan oleh karena itu kami tidak menyarankan untuk mengandalkannya.

Sintaks

hll(expr [, akurasi])

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
expr string ✔️ Ekspresi yang digunakan untuk perhitungan agregasi.
ketepatan int Nilai yang mengontrol keseimbangan antara kecepatan dan akurasi. Jika tidak ditentukan, nilai defaultnya adalah 1. Untuk nilai yang didukung, lihat Akurasi estimasi.

Mengembalikan

Mengembalikan hasil perantara dari jumlah kedaluwarsa yang berbeda di seluruh grup.

Contoh

Dalam contoh berikut, hll() fungsi digunakan untuk memperkirakan jumlah nilai DamageProperty unik kolom dalam setiap bin waktu 10 menit kolom StartTime .

StormEvents
| summarize hll(DamageProperty) by bin(StartTime,10m)

Tabel hasil yang ditampilkan hanya menyertakan 10 baris pertama.

StartTime hll_DamageProperty
2007-01-01T00:20:00Z [[1024,14],["3803688792395291579"],[]]
2007-01-01T01:00:00Z [[1024,14],["7755241107725382121","-5665157283053373866","3803688792395291579","-1003235211361077779"],[]]
2007-01-01T02:00:00Z [[1024,14],["-1003235211361077779","-5665157283053373866","7755241107725382121"],[]]
2007-01-01T02:20:00Z [[1024,14],["7755241107725382121"],[]]
2007-01-01T03:30:00Z [[1024,14],["3803688792395291579"],[]]
2007-01-01T03:40:00Z [[1024,14],["-5665157283053373866"],[]]
2007-01-01T04:30:00Z [[1024,14],["3803688792395291579"],[]]
2007-01-01T05:30:00Z [[1024,14],["3803688792395291579"],[]]
2007-01-01T06:30:00Z [[1024,14],["1589522558235929902"],[]]

Akurasi estimasi

Fungsi ini menggunakan varian dari algoritma HyperLogLog (HLL), yang melakukan estimasi stokastik dari kardinalitas yang ditetapkan. 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:

Grafik memperlihatkan distribusi kesalahan hll.