quantileDeterministic
Добавленный в: v1.1.0
Вычисляет приблизительный квантиль числовой последовательности данных.
Эта функция использует резервуарное сэмплирование с размером резервуара до 8192 и детерминированным алгоритмом сэмплирования.
Результат является детерминированным.
Чтобы получить точный квантиль, используйте функцию quantileExact.
При использовании в запросе нескольких функций quantile* с разными уровнями их внутренние состояния не объединяются (то есть запрос работает менее эффективно, чем мог бы).
В этом случае используйте функцию quantiles.
Синтаксис
quantileDeterministic(level)(expr, determinator)Псевдонимы: medianDeterministic
Параметры
level— Необязательный параметр. Уровень квантиля. Константное число с плавающей точкой от 0 до 1. Рекомендуется использовать значениеlevelв диапазоне[0.01, 0.99]. Значение по умолчанию: 0.5. Приlevel=0.5функция вычисляет медиану.Float*
Аргументы
expr— Выражение над значениями столбца, результатом которого являются числовые типы данных,DateилиDateTime.(U)Int*илиInt128илиUInt128илиInt256илиUInt256илиFloat*илиDateилиDateTimedeterminator— Число, хеш которого используется вместо генератора случайных чисел в алгоритме резервуарного сэмплирования, чтобы сделать результат сэмплирования детерминированным. В качествеdeterminatorможно использовать любое детерминированное положительное число, например идентификатор пользователя или события. Если одно и то же значениеdeterminatorвстречается слишком часто, функция работает некорректно.UInt*
Возвращаемое значение
Возвращает приблизительный квантиль указанного уровня. Float64 или Date или DateTime
Примеры
Вычисление детерминированного квантиля
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);
SELECT quantileDeterministic(val, 1) FROM t;┌─quantileDeterministic(val, 1)─┐
│ 1.5 │
└───────────────────────────────┘См. также