Partilhar via


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 ou hll_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:

Gráfico a mostrar a distribuição de erros hll.