Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqCombined64

uniqCombined64

Добавленный в: v20.1.0

Вычисляет приблизительное количество различных значений аргумента. То же, что и uniqCombined, но использует 64-битный хеш для всех типов данных, а не только для типа данных String.

Эта функция возвращает детерминированный результат (он не зависит от порядка обработки запроса).

По сравнению с функцией uniq, функция uniqCombined64:

  • Потребляет в несколько раз меньше памяти
  • Обеспечивает в несколько раз более высокую точность
Подробности реализации

Эта функция вычисляет 64-битный хеш для всех типов данных и всех параметров агрегатной функции, а затем использует его в вычислениях. Она использует комбинацию трех алгоритмов: массива, хеш-таблицы и HyperLogLog с таблицей коррекции ошибок:

  • Для небольшого числа различных элементов используется массив
  • Когда размер множества увеличивается, используется хеш-таблица
  • Для еще большего числа элементов используется HyperLogLog, который занимает фиксированный объем памяти

Синтаксис

uniqCombined64(HLL_precision)(x[, ...])
uniqCombined64(x[, ...])

Параметры

  • HLL_precision — Необязательный параметр. Двоичный логарифм числа ячеек в HyperLogLog. Значение по умолчанию — 17, что соответствует примерно 96 КиБ памяти (2^17 ячеек по 6 бит каждая). Диапазон: [12, 20]. UInt8

Аргументы

Возвращаемое значение

Возвращает число типа UInt64, которое представляет приблизительное количество различных значений аргументов. UInt64

Примеры

Пример для большого набора данных

SELECT uniqCombined64(number) FROM numbers(1e10);
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘

Сравнение с 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 │
└──────────────────────┘

См. также

Navigation