Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigest

quantilesTDigest

Добавленный в: v1.1.0

Вычисляет несколько приблизительных квантилей числовой последовательности данных на разных уровнях одновременно с помощью алгоритма t-digest.

Эта функция эквивалентна quantileTDigest, но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции для каждого квантиля.

Потребление памяти составляет log(n), где n — количество значений. Результат зависит от порядка выполнения запроса и является недетерминированным.

Производительность этой функции ниже, чем у quantiles или quantilesTiming. По соотношению размера состояния и точности эта функция значительно превосходит quantiles.

Синтаксис

quantilesTDigest(level1, level2, ...)(expr)

Параметры

  • level — Уровни квантилей. Одно или несколько константных чисел с плавающей запятой в диапазоне от 0 до 1. Рекомендуется использовать значения level из диапазона [0.01, 0.99]. Float*

Аргументы

  • expr — Выражение над значениями столбца, результатом вычисления которого являются числовые типы данных, Date или DateTime. (U)Int* или Float* или Date или DateTime

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

Массив приближённых квантилей указанных уровней в том же порядке, в котором эти уровни были заданы. Для входных значений Date и DateTime выходной формат совпадает с входным. Array(Float32) или Array(Date) или Array(DateTime)

Примеры

Вычисление нескольких квантилей с помощью t-digest

SELECT quantilesTDigest(0.25, 0.5, 0.75)(number) FROM numbers(100);
┌─quantilesTDigest(0.25, 0.5, 0.75)(number)─┐
│ [24,49,74]                                │
└───────────────────────────────────────────┘
Navigation