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

> Ajusta uma reta a valores de séries temporais em uma grade temporal regular.

# timeSeriesLinearRegressionToGrid

<h2 id="timeSeriesLinearRegressionToGrid">
  timeSeriesLinearRegressionToGrid
</h2>

Introduzido em: v26.9.0

Função de agregação que recebe dados de séries temporais como pares de timestamps e valores e ajusta uma reta aos valores em uma grade temporal regular definida por timestamp inicial, timestamp final e passo. Para cada ponto da grade, uma reta é ajustada às amostras dentro da janela de tempo especificada, e a função retorna a tupla `(intercept, slope)`: `intercept` é o valor dessa reta no timestamp do ponto da grade e `slope` é a inclinação da reta por segundo. Ambos são NULL se não houver amostras suficientes na janela.

O resultado de `timeSeriesPredictLinearToGrid` com o deslocamento `t` é igual a `intercept + slope * t`, e o resultado de `timeSeriesDerivToGrid` é igual a `slope`. A função PromQL `predict_linear` é implementada com esta função, o que permite que o deslocamento da predição varie entre os pontos da grade, como em `predict_linear(v, time())`.

As amostras podem ser fornecidas de três formas:

* como dois argumentos `timestamp` e `value`, em que cada linha contém uma única amostra;
* como dois arrays de timestamps e valores, em que cada linha contém uma série temporal inteira;
* como um único array de tuplas `(timestamp, value)`, em que cada linha contém uma série temporal inteira.

Se várias amostras tiverem o mesmo timestamp, apenas uma delas será usada: a de maior valor. Um valor NaN perde para qualquer outro valor; portanto, um valor NaN só é usado se todas as amostras nesse timestamp forem NaN.

<Note>
  Esta função está em prévia privada; habilite-a definindo `enable_time_series_aggregate_functions=true`.
</Note>

**Sintaxe**

```sql theme={null}
timeSeriesLinearRegressionToGrid(start_timestamp, end_timestamp, grid_step, staleness)(timestamp, value)
timeSeriesLinearRegressionToGrid(start_timestamp, end_timestamp, grid_step, staleness)(samples)
```

**Parâmetros**

* `start_timestamp` — Especifica o início da grade. Também pode ser um número fracionário ou uma string contendo um número ou um texto de data e hora. [`UInt32`](/pt-BR/reference/data-types/int-uint) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`DateTime64`](/pt-BR/reference/data-types/datetime64) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal*`](/pt-BR/reference/data-types/decimal) ou [`String`](/pt-BR/reference/data-types/string)
* `end_timestamp` — Especifica o fim da grade. Também pode ser um número fracionário ou uma string contendo um número ou um texto de data e hora. [`UInt32`](/pt-BR/reference/data-types/int-uint) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`DateTime64`](/pt-BR/reference/data-types/datetime64) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal*`](/pt-BR/reference/data-types/decimal) ou [`String`](/pt-BR/reference/data-types/string)
* `grid_step` — Especifica o passo da grade em segundos. Também pode ser um número fracionário ou uma string contendo um número ou uma duração, como '15s' ou '1m'. [`UInt32`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal*`](/pt-BR/reference/data-types/decimal) ou [`String`](/pt-BR/reference/data-types/string)
* `staleness` — Especifica a "staleness" máxima, em segundos, das amostras consideradas. A janela de staleness é um intervalo aberto à esquerda e fechado à direita. Também pode ser um número fracionário ou uma string contendo um número ou uma duração, como '15s' ou '1m'. [`UInt32`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal*`](/pt-BR/reference/data-types/decimal) ou [`String`](/pt-BR/reference/data-types/string)

**Argumentos**

* `timestamp` — Timestamp da amostra. Pode ser composto por valores individuais ou arrays. [`UInt32`](/pt-BR/reference/data-types/int-uint) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`DateTime64`](/pt-BR/reference/data-types/datetime64) ou [`Array(UInt32)`](/pt-BR/reference/data-types/array) ou [`Array(DateTime)`](/pt-BR/reference/data-types/array) ou [`Array(DateTime64)`](/pt-BR/reference/data-types/array)
* `value` — Valor da série temporal correspondente ao timestamp. Pode ser composto por valores individuais ou arrays. [`Float*`](/pt-BR/reference/data-types/float) ou [`Array(Float*)`](/pt-BR/reference/data-types/array)
* `samples` — Amostras da série temporal passadas como um array de tuplas `(timestamp, value)`, em que os elementos da tupla têm os tipos de timestamp e de valor listados acima. É uma alternativa a passar os timestamps e os valores como dois argumentos separados. [`Array(Tuple(T1, T2))`](/pt-BR/reference/data-types/array)

**Valor retornado**

A tupla `(intercept, slope)` para cada ponto da grade: o valor da reta ajustada no timestamp do ponto da grade e sua inclinação por segundo. Ambos os elementos são NULL se não houver amostras suficientes dentro da janela de um determinado ponto da grade. [`Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))`](/pt-BR/reference/data-types/array)

**Exemplos**

**Ajustar uma reta à grade \[100, 110, 120] e comparar com timeSeriesPredictLinearToGrid e timeSeriesDerivToGrid**

```sql title=Query theme={null}
SET enable_time_series_aggregate_functions = 1;
WITH
    [100, 110, 120]::Array(DateTime) AS timestamps,
    [10, 20, 30]::Array(Float64) AS values,
    timeSeriesLinearRegressionToGrid(100, 120, 10, 30)(timestamps, values) AS regression
SELECT
    regression,
    arrayMap(r -> r.intercept + r.slope * 60, regression) AS predict_linear_60,
    arrayMap(r -> r.slope, regression) AS deriv;
```

```response title=Response theme={null}
┌─regression──────────────────┬─predict_linear_60─┬─deriv──────┐
│ [(NULL,NULL),(20,1),(30,1)] │ [NULL,80,90]      │ [NULL,1,1] │
└─────────────────────────────┴───────────────────┴────────────┘
```
