> ## 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 una recta a valores de series temporales en una cuadrícula temporal regular.

# timeSeriesLinearRegressionToGrid

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

Introducido en: v26.9.0

Función de agregación que recibe datos de series temporales como pares de marcas de tiempo y valores, y ajusta una recta a los valores sobre una cuadrícula temporal regular definida por una marca de tiempo inicial, una marca de tiempo final y un paso. Para cada punto de la cuadrícula, las muestras comprendidas en la ventana de tiempo especificada se ajustan mediante una recta, y la función devuelve la tupla `(intercept, slope)`: `intercept` es el valor de esa recta en la marca de tiempo del punto de la cuadrícula y `slope` es su pendiente por segundo. Ambos valores son NULL si no hay suficientes muestras en la ventana.

El resultado de `timeSeriesPredictLinearToGrid` con el desplazamiento `t` es igual a `intercept + slope * t`, y el resultado de `timeSeriesDerivToGrid` es igual a `slope`. La función `predict_linear` de PromQL se implementa con esta función, lo que permite que el desplazamiento de la predicción varíe entre los puntos de la cuadrícula, como en `predict_linear(v, time())`.

Las muestras pueden pasarse de tres formas distintas:

* como dos argumentos `timestamp` y `value`, donde cada fila contiene una sola muestra;
* como dos arrays de marcas de tiempo y valores, donde cada fila contiene una serie temporal completa;
* como un único array de tuplas `(timestamp, value)`, donde cada fila contiene una serie temporal completa.

Si varias muestras tienen la misma marca de tiempo, solo se utiliza una de ellas: la de mayor valor. Un valor NaN pierde frente a cualquier otro valor, por lo que solo se utiliza un valor NaN si todas las muestras con esa marca de tiempo son NaN.

<Note>
  Esta función está en vista previa privada; para habilitarla, establezca `enable_time_series_aggregate_functions=true`.
</Note>

**Sintaxis**

```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 el inicio de la cuadrícula. También puede ser un número fraccionario o una cadena que contenga un número o una fecha y hora en formato de texto. [`UInt32`](/es/reference/data-types/int-uint) o [`DateTime`](/es/reference/data-types/datetime) o [`DateTime64`](/es/reference/data-types/datetime64) o [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`String`](/es/reference/data-types/string)
* `end_timestamp` — Especifica el final de la cuadrícula. También puede ser un número fraccionario o una cadena que contenga un número o una fecha y hora en formato de texto. [`UInt32`](/es/reference/data-types/int-uint) o [`DateTime`](/es/reference/data-types/datetime) o [`DateTime64`](/es/reference/data-types/datetime64) o [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`String`](/es/reference/data-types/string)
* `grid_step` — Especifica el paso de la cuadrícula en segundos. También puede ser un número fraccionario o una cadena que contenga un número o una duración, como '15s' o '1m'. [`UInt32`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`String`](/es/reference/data-types/string)
* `staleness` — Especifica la "antigüedad" máxima, en segundos, de las muestras consideradas. La ventana de antigüedad es un intervalo abierto por la izquierda y cerrado por la derecha. También puede ser un número fraccionario o una cadena que contenga un número o una duración, como '15s' o '1m'. [`UInt32`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`String`](/es/reference/data-types/string)

**Argumentos**

* `timestamp` — Marca de tiempo de la muestra. Puede ser un valor individual o un array. [`UInt32`](/es/reference/data-types/int-uint) o [`DateTime`](/es/reference/data-types/datetime) o [`DateTime64`](/es/reference/data-types/datetime64) o [`Array(UInt32)`](/es/reference/data-types/array) o [`Array(DateTime)`](/es/reference/data-types/array) o [`Array(DateTime64)`](/es/reference/data-types/array)
* `value` — Valor de la serie temporal correspondiente a la marca de tiempo. Puede ser un valor individual o un array. [`Float*`](/es/reference/data-types/float) o [`Array(Float*)`](/es/reference/data-types/array)
* `samples` — Muestras de la serie temporal pasadas como un array de tuplas `(timestamp, value)`, cuyos elementos tienen los tipos de marca de tiempo y valor indicados anteriormente. Es una alternativa a pasar las marcas de tiempo y los valores como dos argumentos independientes. [`Array(Tuple(T1, T2))`](/es/reference/data-types/array)

**Valor devuelto**

La tupla `(intercept, slope)` para cada punto de la cuadrícula: el valor de la recta ajustada en la marca de tiempo del punto de la cuadrícula y su pendiente por segundo. Ambos elementos son NULL si no hay suficientes muestras dentro de la ventana de un punto de la cuadrícula determinado. [`Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))`](/es/reference/data-types/array)

**Ejemplos**

**Ajustar una recta en la cuadrícula \[100, 110, 120] y compararla con timeSeriesPredictLinearToGrid y 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] │
└─────────────────────────────┴───────────────────┴────────────┘
```
