Las funciones HyperLogLog son funciones de agregación aproximada, similares a approx_distinct. Devuelven resultados estimados rápidamente al analizar grandes conjuntos de datos.
A continuación se presentan las funciones HyperLogLog disponibles.
Para usar cadenas en instrucciones analíticas, enciérrelas entre comillas simples (''). Las cadenas sin comillas o entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indican el campo de registro status.
|
Función |
Sintaxis |
Descripción |
Compatibilidad con SQL |
Compatibilidad con SPL |
|
approx_set(x) |
Estima el número de valores distintos en x. El error estándar máximo predeterminado es 0.01625. |
√ |
× |
|
|
cardinality(x) |
Convierte un valor HyperLogLog a un valor bigint. |
√ |
× |
|
|
empty_approx_set() |
Devuelve un conjunto HyperLogLog vacío. El error estándar máximo predeterminado es 0.01625. |
√ |
× |
|
|
merge(x) |
Combina varios conjuntos HyperLogLog en uno solo. |
√ |
× |
Función approx_set
La función approx_set estima el número de valores distintos en x. El error estándar máximo predeterminado es 0.01625.
Syntax
approx_set(x)
Parameters
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de dato. |
Return value type
HyperLogLog
Examples
Estime los visitantes únicos (UV) por minuto de un sitio web. El resultado se presenta en formato HyperLogLog.
-
Instrucción de consulta y análisis
* | SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time Resultados de la consulta y el análisis: devuelve
Time(marca de tiempo truncada al minuto) yUV(conjunto aproximado codificado generado porapprox_set). Total: 16 registros.
Función cardinality
La función cardinality convierte un valor HyperLogLog a un valor bigint.
Syntax
cardinality(x)
Parameters
|
Parámetro |
Descripción |
|
x |
Una expresión HyperLogLog. |
Return value type
bigint
Examples
Use approx_set para estimar los UV por minuto (devuelve un valor HyperLogLog) y luego use cardinality para convertir ese valor a bigint.
-
Instrucción de consulta y análisis
* | SELECT Time, cardinality(UV) AS UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time ) AS UV Los resultados muestran los conteos de UV por minuto en las columnas Time y UV. Por ejemplo, 78 UV a las 2021-09-09 15:12:00 y 561 a las 15:13:00.
Función empty_approx_set
La función empty_approx_set devuelve un conjunto HyperLogLog vacío. El error estándar máximo predeterminado es 0.01625.
Syntax
empty_approx_set()
Return value type
HyperLogLog
Examples
Devuelve un conjunto HyperLogLog vacío.
-
Instrucción de consulta y análisis
* | SELECT empty_approx_set() Devuelve una sola columna
_col0con el valorAgwAAA==, que corresponde a un conjunto aproximado vacío codificado en Base64.
Función merge
La función merge combina varios conjuntos HyperLogLog en un solo conjunto.
Syntax
merge(x)
Parameters
|
Parámetro |
Descripción |
|
x |
Una expresión HyperLogLog. |
Return value type
HyperLogLog
Examples
Use approx_set para estimar los UV por minuto, merge para combinar los conjuntos de UV y cardinality para convertir el valor final a bigint.
-
Instrucción de consulta y análisis
* | SELECT Time, cardinality(UV) AS UV, cardinality(merge(UV) over()) AS Total_UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM log GROUP BY Time ORDER BY Time ) Resultados de la consulta y el análisis: los conteos de UV por minuto varían (561, 658, 625), mientras que Total_UV muestra el total acumulado (8564) en todas las filas.