Udostępnij za pośrednictwem


hll() (funkcja agregacji)

Dotyczy: ✅Microsoft Fabric

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 summarize dla grupy danych przy użyciu funkcji dcount.

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

Uwaga

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

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.

Uwaga

  • Wyniki hll(), hll_if() i hll_merge() można przechowywać i pobierać później. Na przykład możesz utworzyć codzienne unikatowe podsumowanie użytkownika, 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 generują identyczne wyniki dla identycznych danych wejściowych, dlatego nie zalecamy polegania na nich.
  • Użyj funkcji hll_merge, aby scalić wyniki wielu hll() funkcji.
  • Użyj funkcji dcount_hll, aby obliczyć liczbę różnych wartości z danych wyjściowych hll() funkcji lubhll_merge.

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)

wyjściowe

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.