Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

uniqHLL12

uniqHLL12

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

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

Подробности реализации

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

Используются 2^12 ячеек по 5 бит. Размер состояния — чуть более 2.5 КБ. Результат недостаточно точен (ошибка до ~10%) для небольших наборов данных (<10K элементов). Однако для наборов данных с высокой мощностью (10K-100M) результат достаточно точен, с максимальной ошибкой ~1.6%. Начиная с 100M ошибка оценки возрастает, и для наборов данных с чрезвычайно высокой мощностью (1B+ элементов) функция будет возвращать очень неточные результаты.

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

Синтаксис

uniqHLL12(x[, ...])

Аргументы

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

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

Примеры

Базовое использование

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;
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘

См. также

Navigation