timeSeriesResampleToGridWithStaleness
Добавленный в: v25.6.0
Агрегатная функция, которая принимает данные временных рядов в виде пар временных меток и значений и выполняет повторную дискретизацию их на регулярную временную сетку, задаваемую начальной временной меткой, конечной временной меткой и шагом. Для каждой точки сетки выбирается самый свежий образец в пределах указанного временного окна.
Псевдоним: timeSeriesLastToGrid.
Эта функция экспериментальная; чтобы включить её, установите allow_experimental_ts_to_grid_aggregate_function=true.
Синтаксис
timeSeriesResampleToGridWithStaleness(start_timestamp, end_timestamp, grid_step, staleness_window)(timestamp, value)
Псевдонимы: timeSeriesLastToGrid
Параметры
start_timestamp — Задаёт начало сетки. UInt32 или DateTime
end_timestamp — Задаёт конец сетки. UInt32 или DateTime
grid_step — Задаёт шаг сетки в секундах. UInt32
staleness_window — Задаёт максимально допустимую устарелость последнего значения в секундах. UInt32
Аргументы
Возвращаемое значение
Возвращает значения временного ряда, для которых выполнена повторная дискретизация по указанной сетке. Возвращаемый массив содержит по одному значению для каждой точки временной сетки. Значение равно NULL, если для конкретной точки сетки нет соответствующего значения. Array(Nullable(Float64))
Примеры
Базовое использование с отдельными парами «временная метка — значение»
WITH
-- ПРИМЕЧАНИЕ: разрыв между 140 и 190 показывает, как заполняются значения для ts = 150, 165, 180 согласно параметру окна устаревания
[110, 120, 130, 140, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 4, 5, 5, 8, 12, 13]::Array(Float32) AS values, -- массив значений, соответствующих временным меткам выше
90 AS start_ts, -- начало сетки временных меток
90 + 120 AS end_ts, -- конец сетки временных меток
15 AS step_seconds, -- шаг сетки временных меток
30 AS window_seconds -- окно "устаревания"
SELECT timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)
FROM
(
-- Этот подзапрос преобразует массивы временных меток и значений в строки `timestamp`, `value`
SELECT
arrayJoin(arrayZip(timestamps, values)) AS ts_and_val,
ts_and_val.1 AS timestamp,
ts_and_val.2 AS value
);
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8] │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
Использование массивов в качестве аргументов
WITH
[110, 120, 130, 140, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 4, 5, 5, 8, 12, 13]::Array(Float32) AS values,
90 AS start_ts,
90 + 120 AS end_ts,
15 AS step_seconds,
30 AS window_seconds
SELECT timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values);
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8] │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.