hll() (función de agregación)
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
La hll()
función es una manera de calcular el número de valores únicos en un conjunto de valores. Para ello, calcula los resultados intermedios para la agregación dentro del operador summarize para un grupo de datos mediante la dcount
función .
Obtenga información sobre el algoritmo subyacente (HyperLogLog) y la precisión de la estimación.
Nota:
Esta función se usa junto con el operador summarize.
Sugerencia
- Use la función hll_merge para combinar los resultados de varias
hll()
funciones. - Use la función dcount_hll para calcular el número de valores distintos de la salida de las
hll()
funciones ohll_merge
.
Importante
Los resultados de hll(), hll_if() y hll_merge() se pueden almacenar y recuperar posteriormente. Por ejemplo, puede que quiera crear un resumen diario de usuarios únicos, que luego se puede usar para calcular recuentos semanales. Sin embargo, la representación binaria precisa de estos resultados puede cambiar con el tiempo. No hay ninguna garantía de que estas funciones produzcan resultados idénticos para entradas idénticas y, por lo tanto, no se recomienda confiar en ellas.
Sintaxis
hll
(
expr [,
precision])
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
expr | string |
✔️ | Expresión usada para el cálculo de agregación. |
exactitud | int |
Valor que controla el equilibrio entre velocidad y precisión. Si no se especifica, se usa el valor predeterminado 1 . Para conocer los valores admitidos, consulte Precisión de estimación. |
Devoluciones
Devuelve los resultados intermedios del recuento distinto de expr en el grupo.
Ejemplo
En el ejemplo siguiente, la hll()
función se usa para calcular el número de valores únicos de la DamageProperty
columna en cada intervalo de tiempo de 10 minutos de la StartTime
columna.
StormEvents
| summarize hll(DamageProperty) by bin(StartTime,10m)
La tabla de resultados que se muestra incluye solo las primeras 10 filas.
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"],[]] |
Precisión de la estimación
Esta función usa una variante del algoritmo HyperLogLog (HLL), que realiza una estimación estocástica de la cardinalidad establecida. El algoritmo proporciona una "manija" que se puede usar 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 |
Nota:
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 (cero errores), si la cardinalidad del conjunto 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 errores es probabilístico, no un enlace teórico. El valor es la desviación estándar de la distribución de errores (sigma) y el 99,7 % de las estimaciones tendrá un error relativo de menos de 3 x sigma.
En la imagen siguiente se muestra la función de distribución de probabilidad del error de estimación relativa, en porcentajes, para todas las configuraciones de precisión compatibles: