Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined64

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

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

Navigation