Delen via


hll() (aggregatiefunctie)

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

De functie hll() is een manier om het aantal unieke waarden in een set waarden te schatten. Dit doet u door tussenliggende resultaten te berekenen voor aggregatie binnen de operator voor een groep gegevens samen te vatten met behulp van de functie dcount.

Lees meer over het onderliggende algoritme (HyperLogLog) en de nauwkeurigheid van de schatting.

Notitie

Deze functie wordt gebruikt in combinatie met de operator summarize.

Syntaxis

hll ( expr [,nauwkeurigheid])

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
expr- string ✔️ De expressie die wordt gebruikt voor de aggregatieberekening.
nauwkeurigheid int De waarde waarmee de balans tussen snelheid en nauwkeurigheid wordt bepaald. Als deze niet is opgegeven, wordt de standaardwaarde 1. Zie Schattingsnauwkeurigheidvoor ondersteunde waarden.

Retourneert

Retourneert de tussenliggende resultaten van het unieke aantal expr in de hele groep.

Notitie

  • De resultaten van hll(), hll_if() en hll_merge() kunnen worden opgeslagen en later worden opgehaald. U kunt bijvoorbeeld een dagelijks uniek gebruikersoverzicht maken, dat vervolgens kan worden gebruikt om wekelijkse aantallen te berekenen. De exacte binaire weergave van deze resultaten kan echter na verloop van tijd veranderen. Er is geen garantie dat deze functies identieke resultaten produceren voor identieke invoer, en daarom raden we u niet aan om erop te vertrouwen.
  • Gebruik de functie hll_merge om de resultaten van meerdere hll() functies samen te voegen.
  • Gebruik de functie dcount_hll om het aantal afzonderlijke waarden uit de uitvoer van de hll()- of hll_merge-functies te berekenen.

Voorbeeld

In het volgende voorbeeld wordt de functie hll() gebruikt om het aantal unieke waarden van de kolom DamageProperty binnen elke tijdsbak van 10 minuten van de StartTime kolom te schatten.

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

uitvoer

De weergegeven resultatentabel bevat alleen de eerste 10 rijen.

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"],[]]

Nauwkeurigheid van schatting

Deze functie maakt gebruik van een variant van het HyperLogLog-algoritme (HLL), waarmee een stochastische schatting van de setkardinaliteit wordt uitgevoerd. Het algoritme biedt een 'knop' die kan worden gebruikt om de nauwkeurigheid en uitvoeringstijd per geheugengrootte te verdelen:

Nauwkeurigheid Fout (%) Aantal vermeldingen
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

Notitie

De kolom Aantal vermeldingen is het aantal 1-bytetellers in de HLL-implementatie.

Het algoritme bevat enkele voorzieningen voor het uitvoeren van een perfecte telling (nulfout), als de setkardinaliteit klein genoeg is:

  • Wanneer het nauwkeurigheidsniveau wordt 1, worden 1000 waarden geretourneerd
  • Wanneer het nauwkeurigheidsniveau wordt 2, worden 8000 waarden geretourneerd

De foutgrens is probabilistisch, niet een theoretische gebonden. De waarde is de standaarddeviatie van foutverdeling (de sigma) en 99,7% van de schattingen hebben een relatieve fout van minder dan 3 x sigma.

In de volgende afbeelding ziet u de kansverdelingsfunctie van de relatieve schattingsfout, in percentages, voor alle ondersteunde nauwkeurigheidsinstellingen:

Grafiek met de hll-foutverdeling.