Compartilhar via


hll() (função de agregação)

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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 or hll_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:

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