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] │
└───────────────────────────────────────────┘