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— Идентификатор временной серии.UInt64sampling_key— Хеш, вычисляемый для каждой серии и определяющий порядок выбора, напримерtimeSeriesGroupToSamplingKey(key).UInt64values— Значения временной серии, выровненные по временной сетке, — по одному элементу на каждый шаг времени.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