hll() (agregační funkce)

Funkce hll() představuje způsob, jak odhadnout počet jedinečných hodnot v sadě hodnot. Provede to tak, že vypočítá mezivýsledky agregace v rámci operátoru sumarizace pro skupinu dat pomocí dcount funkce .

Přečtěte si o základním algoritmu (HyperLogLog) a o přesnosti odhadu.

Poznámka

Tato funkce se používá ve spojení s operátorem summarize.

Tip

  • Pomocí funkce hll_merge sloučíte výsledky více hll() funkcí.
  • Funkce dcount_hll slouží k výpočtu počtu jedinečných hodnot z výstupu hll() funkcí nebo hll_merge .

Důležité

Výsledky hll(), hll_if() a hll_merge() je možné uložit a později načíst. Můžete například chtít vytvořit denní souhrn jedinečných uživatelů, který pak můžete použít k výpočtu týdenních počtů. Přesné binární znázornění těchto výsledků se však může v průběhu času měnit. Neexistuje žádná záruka, že tyto funkce pro identické vstupy vygenerují identické výsledky, a proto nedoporučujeme spoléhat se na ně.

Syntax

hll(výraz [,přesnost])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Výraz string ✔️ Výraz použitý pro výpočet agregace.
Přesnost int Hodnota, která řídí rovnováhu mezi rychlostí a přesností. Pokud není zadáno, výchozí hodnota je 1. Podporované hodnoty najdete v tématu Přesnost odhadu.

Návraty

Vrátí mezivýsledky jedinečného počtu výrazů ve skupině.

Příklad

V následujícím příkladu hll() se funkce používá k odhadu počtu jedinečných DamageProperty hodnot sloupce v rámci každého 10minutového časového intervalu StartTime sloupce.

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

Zobrazená tabulka výsledků obsahuje pouze prvních 10 řádků.

StartTime hll_DamageProperty
2007-01-01T0: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"],[]]

Přesnost odhadu

Tato funkce používá variantu algoritmu HyperLogLog (HLL), který provádí stochastický odhad kardinality sady. Algoritmus poskytuje "knoflík", který lze použít k vyvážení přesnosti a doby provádění podle velikosti paměti:

Přesnost Chyba (%) Počet položek
0 1.6 212
1 0.8 214
2 0.4 216
3 0,28 Č. 217
4 0.2 218

Poznámka

Sloupec "počet položek" je počet 1-bajtové čítače v implementaci HLL.

Algoritmus obsahuje několik ustanovení pro provedení dokonalého počtu (chyba nula), pokud je nastavená kardinalita dostatečně malá:

  • Pokud je 1úroveň přesnosti , vrátí se 1 000 hodnot.
  • Pokud je 2úroveň přesnosti , vrátí se 8 000 hodnot.

Chybová hranice je pravděpodobnostní, nikoli teoretická. Hodnota je směrodatnou odchylkou rozdělení chyb (sigma) a 99,7 % odhadů bude mít relativní chybu pod 3 x sigma.

Následující obrázek ukazuje funkci rozdělení pravděpodobnosti chyby relativního odhadu v procentech pro všechna podporovaná nastavení přesnosti:

Graf znázorňující distribuci chyb hll