Saltar al contenido principal

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).
Dado que utiliza un hash de 32 bits para los tipos que no son String, el resultado tendrá un error muy alto para cardinalidades significativamente mayores que UINT_MAX (el error aumentará rápidamente después de unas pocas decenas de miles de millones de valores distintos). Si las cardinalidades son mayores que UINT_MAX, debe usar uniqCombined64 en su lugar.
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
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
Query
SELECT uniqCombined(number) FROM numbers(1e6);
Response
┌─uniqCombined(number)─┐
│              1001148 │
└──────────────────────┘
Con precisión personalizada
Query
SELECT uniqCombined(15)(number) FROM numbers(1e5);
Response
┌─uniqCombined(15)(number)─┐
│                   100768 │
└──────────────────────────┘
Véase también
Última modificación el 10 de junio de 2026