quantileTimingWeighted
quantileTimingWeighted
Появилась в версии: v1.1
С заданной точностью вычисляет квантиль числовой последовательности данных с учётом веса каждого элемента последовательности.
Результат является детерминированным (не зависит от порядка обработки запроса). Функция оптимизирована для работы с последовательностями, описывающими распределения, такие как время загрузки веб‑страниц или время ответа бэкенда.
При использовании нескольких функций quantile* с разными уровнями в одном запросе их внутренние состояния не объединяются (то есть запрос работает менее эффективно, чем мог бы). В этом случае используйте функцию quantiles.
Точность
Вычисление является точным, если:
- Общее количество значений не превышает 5670.
- Общее количество значений превышает 5670, но время загрузки страницы меньше 1024 мс.
В противном случае результат вычисления округляется до ближайшего кратного 16 мс.
Для вычисления квантилей времени загрузки страниц эта функция более эффективна и точна, чем quantile.
Если функции не передано ни одного значения (при использовании quantileTimingIf), возвращается NaN. Это позволяет отличать такие случаи от случаев с результатом, равным нулю. См. заметки о сортировке значений NaN в разделе предложение ORDER BY.
Синтаксис
Псевдонимы: medianTimingWeighted
Параметры
level— Необязательный параметр. Уровень квантиля. Константное число с плавающей запятой от 0 до 1. Рекомендуется использовать значениеlevelв диапазоне[0.01, 0.99]. Значение по умолчанию: 0.5. Приlevel=0.5функция вычисляет медиану.Float*
Аргументы
expr— Выражение по значениям столбца, возвращающее число типа Float*. Если в функцию передаются отрицательные значения, поведение не определено. Если значение больше 30 000 (время загрузки страницы более 30 секунд), считается, что оно равно 30 000.Float*weight— Столбец с весами элементов последовательности. Вес — это количество вхождений значения.UInt*
Возвращаемое значение
Квантиль указанного уровня. Float32
Примеры
Вычисление взвешенного квантиля времени