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

> Ajuste une droite aux valeurs d'une série temporelle sur une grille temporelle régulière.

# timeSeriesLinearRegressionToGrid

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

Introduit dans : v26.9.0

Fonction d'agrégation qui prend en entrée des données de séries temporelles sous forme de paires timestamp-valeur, et ajuste une droite aux valeurs sur une grille temporelle régulière définie par un timestamp de début, un timestamp de fin et un pas. Pour chaque point de la grille, une droite est ajustée aux échantillons compris dans la fenêtre temporelle spécifiée, et la fonction renvoie le tuple `(intercept, slope)` : `intercept` est la valeur de cette droite au timestamp du point de la grille et `slope` est sa pente par seconde. Les deux valent NULL si la fenêtre ne contient pas suffisamment d'échantillons.

Le résultat de `timeSeriesPredictLinearToGrid` avec le décalage `t` est égal à `intercept + slope * t`, et le résultat de `timeSeriesDerivToGrid` est égal à `slope`. La fonction PromQL `predict_linear` repose sur cette fonction, ce qui permet au décalage de prédiction de varier d'un point de la grille à l'autre, comme dans `predict_linear(v, time())`.

Les échantillons peuvent être transmis sous l'une des trois formes suivantes :

* deux arguments `timestamp` et `value`, chaque ligne contenant un seul échantillon ;
* deux tableaux de timestamps et de valeurs, chaque ligne contenant une série temporelle complète ;
* un seul tableau de tuples `(timestamp, value)`, chaque ligne contenant une série temporelle complète.

Si plusieurs échantillons ont le même timestamp, un seul d'entre eux est retenu : celui dont la valeur est la plus élevée. Une valeur NaN l'emporte toujours sur toute autre valeur dans la comparaison ; une valeur NaN n'est donc utilisée que si tous les échantillons à ce timestamp valent NaN.

<Note>
  Cette fonction est en aperçu privé ; activez-la en définissant `enable_time_series_aggregate_functions=true`.
</Note>

**Syntaxe**

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

**Paramètres**

* `start_timestamp` — Indique le début de la grille. Il peut également s'agir d'un nombre fractionnaire, ou d'une string contenant un nombre ou une date-heure sous forme de texte. [`UInt32`](/fr/reference/data-types/int-uint) ou [`DateTime`](/fr/reference/data-types/datetime) ou [`DateTime64`](/fr/reference/data-types/datetime64) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`String`](/fr/reference/data-types/string)
* `end_timestamp` — Indique la fin de la grille. Il peut également s'agir d'un nombre fractionnaire, ou d'une string contenant un nombre ou une date-heure sous forme de texte. [`UInt32`](/fr/reference/data-types/int-uint) ou [`DateTime`](/fr/reference/data-types/datetime) ou [`DateTime64`](/fr/reference/data-types/datetime64) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`String`](/fr/reference/data-types/string)
* `grid_step` — Indique le pas de la grille, en secondes. Il peut également s'agir d'un nombre fractionnaire, ou d'une string contenant un nombre ou une durée telle que '15s' ou '1m'. [`UInt32`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`String`](/fr/reference/data-types/string)
* `staleness` — Indique l'ancienneté (« staleness ») maximale, en secondes, des échantillons pris en compte. La fenêtre d'ancienneté est un intervalle ouvert à gauche et fermé à droite. Il peut également s'agir d'un nombre fractionnaire, ou d'une string contenant un nombre ou une durée telle que '15s' ou '1m'. [`UInt32`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`String`](/fr/reference/data-types/string)

**Arguments**

* `timestamp` — Timestamp de l'échantillon. Peut être une valeur individuelle ou un tableau. [`UInt32`](/fr/reference/data-types/int-uint) ou [`DateTime`](/fr/reference/data-types/datetime) ou [`DateTime64`](/fr/reference/data-types/datetime64) ou [`Array(UInt32)`](/fr/reference/data-types/array) ou [`Array(DateTime)`](/fr/reference/data-types/array) ou [`Array(DateTime64)`](/fr/reference/data-types/array)
* `value` — Valeur de la série temporelle correspondant au timestamp. Peut être une valeur individuelle ou un tableau. [`Float*`](/fr/reference/data-types/float) ou [`Array(Float*)`](/fr/reference/data-types/array)
* `samples` — Échantillons de la série temporelle, passés sous forme de tableau de tuples `(timestamp, value)` dont les éléments ont les types de timestamp et de valeur indiqués ci-dessus. Alternative au passage des timestamps et des valeurs sous forme de deux arguments distincts. [`Array(Tuple(T1, T2))`](/fr/reference/data-types/array)

**Valeur renvoyée**

Le tuple `(intercept, slope)` pour chaque point de la grille : la valeur de la droite ajustée au timestamp du point de la grille, et sa pente par seconde. Les deux éléments valent NULL si la fenêtre ne contient pas suffisamment d'échantillons pour un point de la grille donné. [`Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))`](/fr/reference/data-types/array)

**Exemples**

**Ajuster une droite sur la grille \[100, 110, 120] et comparer avec timeSeriesPredictLinearToGrid et 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] │
└─────────────────────────────┴───────────────────┴────────────┘
```
