Skip to main content

timeSeriesLimitKMasks

Добавлено в: v26.8.0 Выбирает до k временных серий на каждом шаге временной сетки детерминированным псевдослучайным образом. Каждая входная строка соответствует одной временной серии: key идентифицирует серию, sampling_key — хеш серии, задающий порядок выбора, а values содержит значения серии, выровненные по общей временной сетке (поэтому массивы values во всех строках должны иметь одинаковый размер). На каждом шаге выбираются k серий с наименьшими ключами выборки среди тех, у которых на этом шаге есть значения, отличные от NULL. При равенстве ключей выборки предпочтение отдаётся серии с меньшим key. Эта функция реализует оператор агрегации limitk() языка PromQL и хранит лишь одну ограниченную кучу размера k на каждый шаг, поэтому размер её состояния не зависит от количества агрегируемых серий.
Эта функция находится в закрытой предварительной версии. Чтобы включить её, установите enable_time_series_aggregate_functions = 1.
Синтаксис
Аргументы
  • k — Количество серий, выбираемых на каждом шаге времени: либо одно значение для всех шагов, либо массив с отдельным значением для каждого шага. Должно быть одинаковым для всех строк. UInt* или Array(UInt*)
  • key — Идентификатор временной серии. UInt64
  • sampling_key — Хеш, вычисляемый для каждой серии и определяющий порядок выбора, например timeSeriesGroupToSamplingKey(key). UInt64
  • values — Значения временной серии, выровненные по временной сетке, — по одному элементу на каждый шаг времени. Array(Nullable(Float32)) или Array(Nullable(Float64)) или Array(Float32) или Array(Float64)
Возвращаемое значение Возвращает выбранные серии в порядке возрастания key, каждую — вместе с её маской по шагам: steps_mask[t] = 1, если серия выбрана на шаге времени t. Серии, которые не выбраны ни на одном шаге, не возвращаются. Array(Tuple(key UInt64, steps_mask Array(UInt8))) Примеры Выбор 2 серий на каждом шаге времени по наименьшим ключам выборки
Query
Response
Последнее изменение 14 октября 2026 г.