quantilesPrometheusHistogram
Добавленный в: v25.10.0
Вычисляет несколько квантилей гистограммы с помощью линейной интерполяции сразу на нескольких уровнях с учетом накопленного значения и верхних границ каждого бакета гистограммы.
Эта функция эквивалентна quantilePrometheusHistogram, но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции квантилей.
Синтаксис
quantilesPrometheusHistogram(level1, level2, ...)(bucket_upper_bound, cumulative_bucket_value)Параметры
level— Уровни квантилей. Одно или несколько константных чисел с плавающей запятой от 0 до 1. Рекомендуется использовать значенияlevelв диапазоне[0.01, 0.99].Float64
Аргументы
bucket_upper_bound— Верхние границы бакетов гистограммы. Верхняя граница последнего бакета должна быть+Inf.Float*cumulative_bucket_value— Кумулятивные значения бакетов гистограммы. Значения должны монотонно возрастать по мере увеличения верхней границы бакета.UInt*илиFloat*
Возвращаемое значение
Массив квантилей указанных уровней в том же порядке, в котором эти уровни были заданы. Тип результата с плавающей запятой соответствует типу bucket_upper_bound. Array(Float32) или Array(Float64)
Примеры
Пример использования
SELECT quantilesPrometheusHistogram(0.25, 0.5, 0.75)(bucket_upper_bound, cumulative_bucket_value)
FROM VALUES('bucket_upper_bound Float64, cumulative_bucket_value UInt64', (0, 6), (0.5, 11), (1, 14), (inf, 19));┌─quantilesPrometheusHistogram(0.25, 0.5, 0.75)(bucket_upper_bound, cumulative_bucket_value)─┐
│ [0,0.35,1] │
└────────────────────────────────────────────────────────────────────────────────────────────┘