> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Агрегатная функция, которая выполняет повторную дискретизацию временных рядов по указанной сетке.

# timeSeriesResampleToGridWithStaleness

<div id="timeSeriesResampleToGridWithStaleness">
  ## timeSeriesResampleToGridWithStaleness
</div>

Добавленный в: v25.6.0

Агрегатная функция, которая принимает данные временных рядов в виде пар временных меток и значений и выполняет повторную дискретизацию их на регулярную временную сетку, задаваемую начальной временной меткой, конечной временной меткой и шагом. Для каждой точки сетки выбирается самый свежий образец в пределах указанного временного окна.

Псевдоним: `timeSeriesLastToGrid`.

<Warning>
  Эта функция экспериментальная; чтобы включить её, установите `allow_experimental_ts_to_grid_aggregate_function=true`.
</Warning>

**Синтаксис**

```sql theme={null}
timeSeriesResampleToGridWithStaleness(start_timestamp, end_timestamp, grid_step, staleness_window)(timestamp, value)
```

**Псевдонимы**: `timeSeriesLastToGrid`

**Параметры**

* `start_timestamp` — Задаёт начало сетки. [`UInt32`](/ru/reference/data-types/int-uint) или [`DateTime`](/ru/reference/data-types/datetime)
* `end_timestamp` — Задаёт конец сетки. [`UInt32`](/ru/reference/data-types/int-uint) или [`DateTime`](/ru/reference/data-types/datetime)
* `grid_step` — Задаёт шаг сетки в секундах. [`UInt32`](/ru/reference/data-types/int-uint)
* `staleness_window` — Задаёт максимально допустимую устарелость последнего значения в секундах. [`UInt32`](/ru/reference/data-types/int-uint)

**Аргументы**

* `timestamp` — Временная метка значения. Может быть отдельным значением или массивом значений. [`UInt32`](/ru/reference/data-types/int-uint) или [`DateTime`](/ru/reference/data-types/datetime) или [`Array(UInt32)`](/ru/reference/data-types/array) или [`Array(DateTime)`](/ru/reference/data-types/array)
* `value` — Значение временного ряда, соответствующее временной метке. Может быть отдельным значением или массивом значений. [`Float*`](/ru/reference/data-types/float) или [`Array(Float*)`](/ru/reference/data-types/array)

**Возвращаемое значение**

Возвращает значения временного ряда, для которых выполнена повторная дискретизация по указанной сетке. Возвращаемый массив содержит по одному значению для каждой точки временной сетки. Значение равно NULL, если для конкретной точки сетки нет соответствующего значения. [`Array(Nullable(Float64))`](/ru/reference/data-types/array)

**Примеры**

**Базовое использование с отдельными парами «временная метка — значение»**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                                           │
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

**Использование массивов в качестве аргументов**

```sql title=Query theme={null}
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 title=Response theme={null}
┌─timeSeriesResampleToGridWithStaleness(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                                             │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
