GitHubContribuir en GitHub: Editar en línea

dcount () (función de agregación)

Consulte Compatibilidad de KQL para ver las diferencias en la implementación.

Devuelve una estimación para el número de valores distintos que toma una expresión escalar en el grupo de resumen.

La función de agregación dcount() es principalmente útil para estimar la cardinalidad de conjuntos grandes. Cambia el rendimiento por precisión, y puede devolver un resultado que varía entre ejecuciones. El orden de las entradas puede tener un efecto en su salida.

Sintaxis

dcount (Expr[, Precisión])

Argumentos

Esperar Tipo Obligatorio Descripción
Esperar string Expresión escalar cuyos valores distintos deben contarse.
Precisión ent Un literal int opcional que define la precisión de estimación solicitada.
Consulte a continuación los valores soportados. Si no se especifica, se utiliza el valor predeterminado 1 .

Precisión, si se especifica, controla el equilibrio entre velocidad y precisión.

Valor Descripción
0 El cálculo menos preciso y más rápido. 1.6% de error
1 El valor predeterminado, que equilibra la precisión y el tiempo de cálculo; aproximadamente 0.8% de error.
2 Cálculo preciso y lento; aproximadamente 0.4% de error.
3 Cálculo muy preciso y lento; aproximadamente 0.28% de error.
4 Cálculo superpreciso y más lento; aproximadamente 0.2% de error.

Ejemplo

Devuelve una estimación del número de namedistintos.

events
    | project name, original_time
    | where original_time > ago(5m)
    | summarize NameCount=dcount(name)

Resultados

NameCount
2032

Ejemplo

Obtener un recuento exacto de valores distintos de V agrupados por G.

T | summarize by V, G | summarize count() by G

Este cálculo requiere una gran cantidad de memoria interna, ya que los valores distintos de V se multiplican por el número de valores distintos de G. Puede dar como resultado errores de memoria o tiempos de ejecución grandes. dcount()proporciona una alternativa rápida y fiable:

T | summarize dcount(V) by G | count

Precisión de estimación

La función de agregación dcount() utiliza una variante del algoritmo HyperLogLog (HLL), que realiza una estimación estocástica de la cardinalidad del conjunto. El algoritmo proporciona una "perilla" que se puede utilizar para equilibrar la precisión y el tiempo de ejecución por tamaño de memoria:

Precisión Error (%) Recuento de entradas
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

La columna "recuento de entradas" es el número de contadores de 1 byte en la implementación HLL.

El algoritmo incluye algunas disposiciones para realizar un recuento perfecto (error cero), si la cardinalidad establecida es lo suficientemente pequeña:

  • Cuando el nivel de precisión es 1, se devuelven 1000 valores
  • Cuando el nivel de precisión es 2, se devuelven 8000 valores

El límite de error es probabilístico, no un límite teórico. El valor es la desviación estándar de la distribución de errores (sigma) y 99.7% de las estimaciones tendrán un error relativo inferior a 3 x sigma.