uniqCombined64
Introducido en: v20.1.0
Calcula el número aproximado de distintos valores del argumento.
Es igual que 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).
En comparación con la función uniq, la función uniqCombined64:
- Consume varias veces menos memoria
- Calcula con una exactitud varias veces mayor
Detalles de implementación
Esta función calcula un hash de 64 bits para todos los tipos de datos de todos los parámetros de la agregación 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 es mayor, se usa una tabla hash
- Para un número mayor de elementos, se usa HyperLogLog, que ocupará una cantidad fija de memoria
Sintaxis
uniqCombined64(HLL_precision)(x[, ...])
uniqCombined64(x[, ...])Parámetros
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
Argumentos
x— Una cantidad variable de argumentos.Tuple(T)oArray(T)oDateoDateTimeoStringo(U)Int*oFloat*oDecimal
Valor devuelto
Devuelve un número de tipo UInt64 que representa la cantidad aproximada de valores del argumento distintos. UInt64
Ejemplos
Ejemplo con un conjunto de datos grande
SELECT uniqCombined64(number) FROM numbers(1e10);┌─uniqCombined64(number)─┐
│ 9998568925 │
└────────────────────────┘Comparación con uniqCombined
-- uniqCombined64 with large dataset
SELECT uniqCombined64(number) FROM numbers(1e10);
-- uniqCombined with same dataset shows poor approximation
SELECT uniqCombined(number) FROM numbers(1e10);┌─uniqCombined64(number)─┐
│ 9998568925 │
└────────────────────────┘
┌─uniqCombined(number)─┐
│ 5545308725 │
└──────────────────────┘Ver también