Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigestWeighted

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 или DateTime
  • weight — Столбец с весами элементов последовательности. Вес — это число вхождений значения. 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]                                           │
└──────────────────────────────────────────────────────┘
Navigation