Перейти к основному содержимому
Перейти к основному содержимому

quantileTiming

quantileTiming

Впервые представлена в: v1.1

С заданной точностью вычисляет квантиль числовой последовательности данных.

Результат детерминирован (не зависит от порядка обработки запроса). Функция оптимизирована для работы с последовательностями, описывающими распределения, такие как время загрузки веб‑страниц или время ответа бэкенда.

При использовании нескольких функций quantile* с разными уровнями в одном запросе их внутренние состояния не объединяются (то есть запрос работает менее эффективно, чем мог бы). В этом случае используйте функцию quantiles.

Точность

Вычисление является точным, если:

  • Общее количество значений не превышает 5670.
  • Общее количество значений превышает 5670, но время загрузки страницы меньше 1024 мс.

В противном случае результат вычисления округляется до ближайшего кратного 16 мс.

Примечание

Для вычисления квантилей времени загрузки страниц эта функция более эффективна и точна, чем quantile.

Примечание

Если в функцию не переданы значения (при использовании quantileTimingIf), возвращается NaN. Это сделано для того, чтобы отличать такие случаи от случаев, когда результат равен нулю. См. примечания к сортировке значений NaN в разделе ORDER BY.

Синтаксис

quantileTiming(level)(expr)

Псевдонимы: medianTiming

Параметры

  • level — Необязательный параметр. Уровень квантиля. Константное число с плавающей запятой от 0 до 1. Рекомендуем использовать значение level в диапазоне [0.01, 0.99]. Значение по умолчанию: 0.5. При level=0.5 функция вычисляет медиану. Float*

Аргументы

  • expr — Выражение над значениями столбца, возвращающее число типа Float*. Если функции передаются отрицательные значения, поведение не определено. Если значение превышает 30 000 (время загрузки страницы более 30 секунд), оно приравнивается к 30 000. Float*

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

Квантиль указанного уровня. Если функции не передаются значения (при использовании quantileTimingIf), возвращается NaN. Это позволяет отличать такие случаи от случаев, когда результат равен нулю. Float32

Примеры

Вычисление квантиля времени

CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);

SELECT quantileTiming(response_time) FROM t;
┌─quantileTiming(response_time)─┐
│                           126 │
└───────────────────────────────┘

См. также