hll() (função de agregação)
A hll()
função é uma forma de estimar o número de valores exclusivos num conjunto de valores. Fá-lo ao calcular resultados intermédios para agregação no operador de resumo de um grupo de dados que utiliza a dcount
função.
Leia sobre o algoritmo subjacente (HyperLogLog) e a precisão da estimativa.
Nota
Esta função é utilizada em conjunto com o operador de resumo.
Dica
- Utilize a função hll_merge para intercalar os resultados de várias
hll()
funções. - Utilize a função dcount_hll para calcular o número de valores distintos da saída das
hll()
funções ouhll_merge
.
Importante
Os resultados de hll(), hll_if() e hll_merge() podem ser armazenados e obtidos posteriormente. Por exemplo, poderá querer criar um resumo de utilizadores exclusivos diário, que pode ser utilizado para calcular contagens semanais. No entanto, a representação binária precisa destes resultados pode mudar ao longo do tempo. Não há garantias de que estas funções produzam resultados idênticos para entradas idênticas e, portanto, não aconselhamos que confiem nas mesmas.
Syntax
hll
(
expr [,
precisão])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão utilizada para o cálculo de agregação. |
precisão | int |
O valor que controla o equilíbrio entre velocidade e precisão. Se não for especificado, o valor predefinido é 1 . Para valores suportados, veja Estimativa de precisão. |
Devoluções
Devolve os resultados intermédios de contagem distinta de expr em todo o grupo.
Exemplo
No exemplo seguinte, a hll()
função é utilizada para estimar o número de valores exclusivos da coluna dentro de DamageProperty
cada intervalo de tempo de 10 minutos da StartTime
coluna.
StormEvents
| summarize hll(DamageProperty) by bin(StartTime,10m)
A tabela de resultados apresentada 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
Esta função utiliza uma variante do algoritmo HyperLogLog (HLL), que faz uma estimativa estocástica da cardinalidade definida. O algoritmo fornece um "botão" que pode ser utilizado para equilibrar a precisão e o tempo de execução por tamanho da 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 |
Nota
A coluna "contagem de entradas" é o número de contadores de 1 byte na implementação HLL.
O algoritmo inclui algumas disposições para fazer uma contagem perfeita (erro zero), se a cardinalidade definida for suficientemente pequena:
- Quando o nível de precisão é
1
, são devolvidos 1000 valores - Quando o nível de precisão é
2
, são devolvidos 8000 valores
O limite de erros é probabilístico, não é um limite 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 inferior a 3 x sigma.
A imagem seguinte mostra a função de distribuição de probabilidades do erro de estimativa relativa, em percentagens, para todas as definições de precisão suportadas:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários