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

Calcula uma estimativa do número de valores distintos que são tomados por uma expressão escalar no grupo de resumo.

Os valores nulos são ignorados e não têm em conta o cálculo.

Nota

A dcount() função de agregação é essencialmente útil para estimar a cardinalidade de conjuntos enormes. Troca a precisão do desempenho e pode devolver um resultado que varia entre execuções. A ordem das entradas pode ter um efeito na saída.

Nota

Esta função é utilizada em conjunto com o operador summarize.

Syntax

dcount(expr[,precisão])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
expr string ✔️ A entrada cujos valores distintos devem ser contados.
precisão int O valor que define a precisão da estimativa pedida. O valor predefinido é 1. Veja Estimar a precisão dos valores suportados.

Devoluções

Devolve uma estimativa do número de valores distintos de expr no grupo.

Exemplo

Este exemplo mostra quantos tipos de eventos storm ocorreram em cada estado.

StormEvents
| summarize DifferentEvents=dcount(EventType) by State
| order by DifferentEvents

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

Estado DifferentEvents
TEXAS 27
CALIFÓRNIA 26
Porto 25
GEÓRGIA 24
ILLINOIS 23
MARYLAND 23
CAROLINA DO NORTE 23
Viana do Castelo 22
FLORIDA 22
OREGON 21
KANSAS 21
... ...

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 vínculo 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 probabilidade 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.