Partilhar via


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

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A função hll() é 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 resumir operador para um grupo de dados usando a função dcount.

Leia sobre o algoritmo subjacente (HyperLogLog) e a precisão da estimativa.

Observação

Esta função é usada em conjunto com o operador resumo.

Sintaxe

hll ( expr [,precisão])

Saiba mais sobre convenções de sintaxe.

Parâmetros

Designação Tipo Necessário Descrição
expr string ✔️ A expressão usada 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 padrão será 1. Para obter os valores suportados, consulte Precisão da estimativa.

Devoluções

Devolve os resultados intermédios da contagem distinta de de expiração em todo o grupo.

Observação

  • Os resultados de hll(), hll_if() e hll_merge() podem ser armazenados e posteriormente recuperados. Por exemplo, talvez você queira criar um resumo diário exclusivo do usuário, que pode ser usado para calcular contagens semanais. No entanto, a representação binária precisa desses resultados pode mudar ao longo do tempo. Não há garantia de que essas funções produzam resultados idênticos para entradas idênticas e, portanto, não aconselhamos confiar nelas.
  • Use a função hll_merge para mesclar os resultados de várias funções hll().
  • Use a função dcount_hll para calcular o número de valores distintos da saída das funções hll() ou hll_merge.

Exemplo

No exemplo a seguir, a função hll() é usada para estimar o número de valores exclusivos da coluna DamageProperty dentro de cada compartimento de tempo de 10 minutos da coluna StartTime.

StormEvents
| summarize hll(DamageProperty) by bin(StartTime,10m)

Output

A tabela de resultados mostrada inclui apenas as primeiras 10 linhas.

Horário de Início 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 usa uma variante do algoritmo HyperLogLog (HLL), que faz uma estimativa estocástica da cardinalidade do conjunto. O algoritmo fornece um "botão" que pode ser usado para equilibrar a precisão e o tempo de execução por tamanho de memória:

Exatidã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 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, 1000 valores são retornados
  • Quando o nível de precisão é 2, 8000 valores são retornados

O limite de erro é probabilístico, não um limite teórico. O valor é o desvio padrão da distribuição de erro (sigma), e 99,7% das estimativas terão um erro relativo inferior a 3 x sigma.

A imagem a seguir mostra a função de distribuição de probabilidade do erro relativo de estimativa, em porcentagens, para todas as configurações de precisão suportadas:

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