Skip to main content

uniq

Добавленный в: v1.1.0 Вычисляет приблизительное количество различных значений аргумента. Функция использует алгоритм адаптивного сэмплирования. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм очень точен и при этом очень эффективен по нагрузке на CPU. Если запрос содержит несколько таких функций, uniq работает почти так же быстро, как и другие агрегатные функции.
Эта функция вычисляет хеш для всех параметров агрегирования, а затем использует его в вычислениях. Она использует алгоритм адаптивного сэмплирования. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм очень точен и при этом очень эффективен по нагрузке на CPU. Если запрос содержит несколько таких функций, uniq работает почти так же быстро, как и другие агрегатные функции.Выборка хранит 32-битные хеши, которые не позволяют различить больше нескольких миллиардов значений, поэтому дополнительно поддерживается небольшая сильно прореженная выборка полных 64-битных хешей (примерно один хеш на 262144 значения, не более 16384 хешей), и примерно при двух миллиардах оценка переключается на неё. Благодаря этому оценка остаётся точной (с погрешностью около 1%) при мощности в сотни миллиардов и более, тогда как серверы версий до 26.8 в таких случаях возвращали бессмысленные результаты (issue #6078). Состояния, записанные такими серверами, не содержат 64-битной выборки, поэтому при слиянии с ними для слитых значений сохраняется только 32-битная точность.
Мы рекомендуем использовать эту функцию вместо других вариантов почти во всех случаях.
Синтаксис
Аргументы Возвращаемое значение Возвращает число типа UInt64, представляющее приблизительное количество различных значений. UInt64 Примеры Пример использования
Query
Response
Несколько аргументов
Query
Response
См. также