hll() (função de agregação)
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
A hll()
função é uma maneira de estimar o número de valores exclusivos em um conjunto de valores. Ele faz isso calculando resultados intermediários para agregação dentro do operador summarize para um grupo de dados usando a dcount
função.
Leia sobre o algoritmo subjacente (HyperLogLog) e a precisão da estimativa.
Observação
Essa função é usada em conjunto com o operador summarize.
Dica
- Use a função hll_merge para mesclar os resultados de várias
hll()
funções. - Use a função dcount_hll para calcular o número de valores distintos da saída das
hll()
funções orhll_merge
.
Importante
Os resultados de hll(), hll_if() e hll_merge() podem ser armazenados e recuperados posteriormente. Por exemplo, você pode criar um resumo diário de usuários únicos, que pode ser usado para calcular contagens semanais. No entanto, a representação binária precisa desses resultados pode mudar com o tempo. Não há garantia de que essas funções produzirão resultados idênticos para entradas idênticas e, portanto, não recomendamos confiar nelas.
Sintaxe
hll
(
expr [,
precisão])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão usada para o cálculo de agregação. |
exatidão | int |
O valor que controla o equilíbrio entre velocidade e precisão. Se não for especificado, o valor padrão será 1 . Para obter valores compatíveis, consulte Precisão da estimativa. |
Devoluções
Retorna os resultados intermediários da contagem distinta de expr em todo o grupo.
Exemplo
No exemplo a seguir, a hll()
função é usada para estimar o número de valores exclusivos da DamageProperty
coluna em cada compartimento de tempo de 10 minutos da StartTime
coluna.
StormEvents
| summarize hll(DamageProperty) by bin(StartTime,10m)
A tabela de resultados mostrada inclui apenas as primeiras 10 linhas.
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"],[]] |
Precisão da estimativa
Essa função usa uma variante do algoritmo HyperLogLog (HLL), que faz uma estimativa estocástica da cardinalidade do conjunto. O algoritmo oferece um "botão" que pode ser usado para balancear a precisão e o tempo de execução por tamanho de memória:
Precisão | Erro (%) | Contagem de entradas |
---|---|---|
0 | 1.6 | 212 |
1 | 0,8 | 214 |
2 | 0,4 | 216 |
3 | 0,28 | 217 |
4 | 0,2 | 218 |
Observação
A coluna "contagem de entradas" é o número de contadores de 1 byte na implementação de HLL.
O algoritmo inclui algumas provisões para fazer uma contagem perfeita (erro zero), se a cardinalidade definida for pequena o suficiente:
- Quando o nível de precisão é
1
, mil valores são retornados - Quando o nível de precisão é
2
, 8 mil valores são retornados
O erro associado é probabilístico, não um associado teórico. O valor é o desvio padrão da distribuição de erros (o sigma) e 99,7% das estimativas terão um erro relativo de menos de 3 x sigma.
A seguinte imagem mostra a função de distribuição de probabilidade do erro de estimativa relativa, em percentuais, para todas as configurações de precisão com suporte: