Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined

uniqCombined

Introducido en: v1.1.0

Calcula el número aproximado de valores de argumento distintos. 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 uniqCombined:

  • Consume varias veces menos memoria
  • Calcula con una precisión varias veces mayor
  • Normalmente tiene un rendimiento ligeramente inferior. En algunos escenarios, uniqCombined puede rendir mejor que uniq; por ejemplo, con consultas distribuidas que transmiten una gran cantidad de estados de agregación por la red
Detalles de implementación

Esta función calcula un hash (de 64 bits para String y de 32 bits en caso contrario) para todos los parámetros de la agregación y luego lo utiliza en los cálculos. Utiliza una combinación de tres algoritmos: array, tabla hash y HyperLogLog con una tabla de corrección de errores:

  • Para una pequeña cantidad de elementos distintos, se utiliza un array
  • Cuando el tamaño del conjunto es mayor, se utiliza una tabla hash
  • Para una cantidad mayor de elementos, se utiliza HyperLogLog, que ocupará una cantidad fija de memoria

Sintaxis

uniqCombined(HLL_precision)(x[, ...])
uniqCombined(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 en la práctica equivale 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 el número aproximado de distintos valores de argumento. UInt64

Ejemplos

Uso básico

SELECT uniqCombined(number) FROM numbers(1e6);
┌─uniqCombined(number)─┐
│              1001148 │
└──────────────────────┘

Con precisión personalizada

SELECT uniqCombined(15)(number) FROM numbers(1e5);
┌─uniqCombined(15)(number)─┐
│                   100768 │
└──────────────────────────┘

Véase también

Navigation