quantilesTDigestWeighted
Добавленный в: v20.1.0
Вычисляет сразу несколько приближённых квантилей числовой последовательности данных на разных уровнях с использованием алгоритма t-digest. Функция учитывает вес каждого элемента последовательности.
Эта функция эквивалентна quantileTDigestWeighted, но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции для каждого квантиля.
Максимальная ошибка составляет 1%. Потребление памяти — log(n), где n — количество значений.
Производительность этой функции ниже, чем у quantiles или quantilesTiming.
По соотношению размера State и точности эта функция значительно превосходит quantiles.
Результат зависит от порядка выполнения запроса и является недетерминированным.
Синтаксис
quantilesTDigestWeighted(level1, level2, ...)(expr, weight)Параметры
level— Уровни квантилей. Одно или несколько константных чисел с плавающей запятой от 0 до 1. Рекомендуется использовать значенияlevelв диапазоне[0.01, 0.99].Float*
Аргументы
expr— Выражение над значениями столбца, возвращающее значения числового типа,DateилиDateTime.(U)Int*илиFloat*илиDateилиDateTimeweight— Столбец с весами элементов последовательности. Вес — это число вхождений значения.UInt*
Возвращаемое значение
Массив приближённых квантилей указанных уровней в том же порядке, в котором они были заданы. Для входных данных Date и DateTime выходной формат соответствует входному формату. Array(Float32) или Array(Date) или Array(DateTime)
Примеры
Вычисление нескольких взвешенных квантилей с использованием t-digest
SELECT quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1) FROM numbers(100);┌─quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1)─┐
│ [24,49,74] │
└──────────────────────────────────────────────────────┘