Udostępnij za pośrednictwem


hll() (funkcja agregacji)

Funkcja hll() jest sposobem oszacowania liczby unikatowych wartości w zestawie wartości. Robi to, obliczając wyniki pośrednie dla agregacji w ramach operatora podsumowania dla grupy danych przy użyciu dcount funkcji .

Przeczytaj o algorytmie bazowym (H yperL ogLog)i dokładności szacowania.

Uwaga

Ta funkcja jest używana w połączeniu z operatorem podsumowania.

Napiwek

Ważne

Wyniki hll(), hll_if() i hll_merge() można przechowywać i pobierać później. Możesz na przykład utworzyć codzienne, unikatowe podsumowanie użytkowników, które następnie może służyć do obliczania liczby tygodni. Jednak dokładna reprezentacja binarna tych wyników może ulec zmianie w czasie. Nie ma gwarancji, że te funkcje będą produkować identyczne wyniki dla identycznych danych wejściowych i dlatego nie zalecamy polegania na nich.

Składnia

hll( wyrażenie [, dokładność])

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
wyrażenie string ✔️ Wyrażenie używane do obliczania agregacji.
dokładność int Wartość, która kontroluje równowagę między szybkością i dokładnością. Jeśli nie określono, wartość domyślna to 1. Aby uzyskać obsługiwane wartości, zobacz Szacowanie dokładności.

Zwraca

Zwraca wyniki pośrednie odrębnej liczby eksplorów w grupie.

Przykład

W poniższym przykładzie hll() funkcja służy do szacowania liczby unikatowych wartości DamageProperty kolumny w ramach każdego 10-minutowego przedziału StartTime czasu kolumny.

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

Wyświetlona tabela wyników zawiera tylko pierwsze 10 wierszy.

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

Dokładność szacowania

Ta funkcja używa wariantu algorytmu HyperLogLog (HLL), który wykonuje stochastyczne oszacowanie kardynalności zestawu. Algorytm udostępnia "pokrętło", które może służyć do równoważenia dokładności i czasu wykonywania na rozmiar pamięci:

Dokładność Błąd (%) Liczba pozycji
0 1.6 212
1 0,8 214
2 0,4 216
3 0,28 217
100 0,2 218

Uwaga

Kolumna "liczba wpisów" jest liczbą liczników 1 bajtów w implementacji HLL.

Algorytm zawiera pewne przepisy dotyczące wykonywania doskonałej liczby (błąd zerowy), jeśli kardynalność zestawu jest wystarczająco mała:

  • Gdy poziom dokładności to 1, zwracane są wartości 1000
  • Gdy poziom dokładności to 2, zwracane są wartości 8000

Granica błędu jest probabilistyczna, a nie teoretyczna granica. Wartość jest odchyleniem standardowym rozkładu błędów (sigma), a 99,7% oszacowań będzie miało względny błąd poniżej 3 x sigma.

Na poniższej ilustracji przedstawiono funkcję rozkładu prawdopodobieństwa błędu szacowania względnego w procentach dla wszystkich obsługiwanych ustawień dokładności:

Wykres przedstawiający rozkład błędów hll.