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

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

# uniqTheta

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

Добавленный в: v21.6.0

Вычисляет приблизительное количество различных значений аргумента, используя [Theta Sketch Framework](https://datasketches.apache.org/docs/Theta/ThetaSketches.html#theta-sketch-framework).

<Accordion title="Подробности реализации">
  Эта функция вычисляет хеш для всех параметров агрегатной функции, а затем использует его в дальнейших вычислениях.
  Для приблизительной оценки количества различных значений аргумента используется алгоритм [KMV](https://datasketches.apache.org/docs/Theta/InverseEstimate.html).

  Используется 64-битный скетч 4096(2^12).
  Размер состояния составляет около 41 КБ.

  Относительная погрешность составляет 3.125% (при доверительной вероятности 95%), подробнее см. в [таблице относительной погрешности](https://datasketches.apache.org/docs/Theta/ThetaErrorTable.html).
</Accordion>

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

```sql theme={null}
uniqTheta(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_theta
(
    id UInt32,
    category String
)
ENGINE = Memory;

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

SELECT uniqTheta(category) as theta_unique_categories
FROM example_theta;
```

```response title=Response theme={null}
┌─theta_unique_categories─┐
│                       3 │
└─────────────────────────┘
```

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

* [uniq](/ru/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/ru/reference/functions/aggregate-functions/uniqCombined)
* [uniqCombined64](/ru/reference/functions/aggregate-functions/uniqCombined64)
* [uniqHLL12](/ru/reference/functions/aggregate-functions/uniqHLL12)
* [uniqExact](/ru/reference/functions/aggregate-functions/uniqExact)
