hll() (funkcja agregacji)
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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
- 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
.
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: