> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# uniqHLL12

<div id="uniqHLL12">
  ## uniqHLL12
</div>

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

Вычисляет приблизительное количество различных значений аргумента с использованием алгоритма [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog).

<Warning>
  Мы не рекомендуем использовать эту функцию. В большинстве случаев используйте [uniq](/ru/reference/functions/aggregate-functions/uniq) или [uniqCombined](/ru/reference/functions/aggregate-functions/uniqCombined).
</Warning>

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

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

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

**Синтаксис**

```sql theme={null}
uniqHLL12(x[, ...])
```

**Аргументы**

* `x` — Функция принимает переменное количество параметров. [`Tuple(T)`](/ru/reference/data-types/tuple) или [`Array(T)`](/ru/reference/data-types/array) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`String`](/ru/reference/data-types/string) или [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)

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

Возвращает число типа UInt64, которое представляет приблизительное количество различных значений аргументов. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
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 title=Response theme={null}
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘
```

**См. также**

* [uniq](/ru/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/ru/reference/functions/aggregate-functions/uniqCombined)
* [uniqExact](/ru/reference/functions/aggregate-functions/uniqExact)
* [uniqTheta](/ru/reference/functions/aggregate-functions/uniqthetasketch)
