Перейти к основному содержанию

uniqHLL12

Добавленный в: v1.1.0 Вычисляет приблизительное количество различных значений аргумента с использованием алгоритма HyperLogLog.
Мы не рекомендуем использовать эту функцию. В большинстве случаев используйте uniq или uniqCombined.
Эта функция вычисляет хеш для всех параметров агрегатной функции, а затем использует его в дальнейших вычислениях. Для приблизительной оценки количества различных значений аргумента используется алгоритм HyperLogLog.Используются 2^12 ячеек по 5 бит. Размер состояния — чуть более 2.5 КБ. Результат недостаточно точен (ошибка до ~10%) для небольших наборов данных (<10K элементов). Однако для наборов данных с высокой мощностью (10K-100M) результат достаточно точен, с максимальной ошибкой ~1.6%. Начиная с 100M ошибка оценки возрастает, и для наборов данных с чрезвычайно высокой мощностью (1B+ элементов) функция будет возвращать очень неточные результаты.Возвращает детерминированный результат (не зависит от порядка обработки запроса).
Синтаксис
uniqHLL12(x[, ...])
Аргументы Возвращаемое значение Возвращает число типа UInt64, которое представляет приблизительное количество различных значений аргументов. UInt64 Примеры Базовое использование
Query
CREATE TABLE example_hll
(
    id UInt32,
    category String
)
ENGINE = Memory;

INSERT INTO example_hll VALUES
(1, 'A'), (2, 'B'), (3, 'A'), (4, 'C'), (5, 'B'), (6, 'A');

SELECT uniqHLL12(category) AS hll_unique_categories
FROM example_hll;
Response
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘
См. также
Последнее изменение 10 июня 2026 г.