uniqCombined64
uniqCombined, pero usa un hash de 64 bits para todos los tipos de datos en lugar de usarlo solo para el tipo de dato String.
Esta función proporciona el resultado de forma determinista (no depende del orden de procesamiento de la consulta).
Como usa un hash de 64 bits para todos los tipos, el resultado no sufre un error muy elevado para cardinalidades significativamente mayores que
UINT_MAX, como sí ocurre con uniqCombined, que usa un hash de 32 bits para los tipos que no son String.- Consume varias veces menos memoria
- Calcula con una precisión varias veces mayor
Detalles de implementación
Detalles de implementación
Esta función calcula un hash de 64 bits para todos los tipos de datos de todos los parámetros del agregado y luego lo usa en los cálculos.
Usa una combinación de tres algoritmos: array, tabla hash y HyperLogLog, con una tabla de corrección de errores:
- Para un número pequeño de elementos distintos, se usa un array
- Cuando el tamaño del conjunto aumenta, se usa una tabla hash
- Para un número mayor de elementos, se usa HyperLogLog, que ocupará una cantidad fija de memoria
HLL_precision— Opcional. El logaritmo en base 2 del número de celdas de HyperLogLog. El valor predeterminado es 17, lo que equivale en la práctica a 96 KiB de espacio (2^17 celdas, de 6 bits cada una). Rango: [12, 20].UInt8
x— Una cantidad variable de argumentos.Tuple(T)oArray(T)oDateoDateTimeoStringo(U)Int*oFloat*oDecimal
UInt64
Ejemplos
Ejemplo con un conjunto de datos grande
Query
Response
Query
Response