Перейти к основному содержанию

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
Аргументы
  • timestamp — Временная метка значения. Может быть отдельным значением или массивом значений. UInt32 или DateTime или Array(UInt32) или Array(DateTime)
  • value — Значение временного ряда, соответствующее временной метке. Может быть отдельным значением или массивом значений. Float* или Array(Float*)
Возвращаемое значение Возвращает значения временного ряда, для которых выполнена повторная дискретизация по указанной сетке. Возвращаемый массив содержит по одному значению для каждой точки временной сетки. Значение равно NULL, если для конкретной точки сетки нет соответствующего значения. Array(Nullable(Float64)) Примеры Базовое использование с отдельными парами «временная метка — значение»
Query
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
);
Response
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                                           │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
Использование массивов в качестве аргументов
Query
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);
Response
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                                             │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.