timeSeriesLinearRegressionToGrid
Introduced in: v26.9.0 Aggregate function that takes time series data as pairs of timestamps and values and fits a line to the values on a regular time grid described by start timestamp, end timestamp and step. For each point on the grid the samples within the specified time window are fitted by a line, and the function returns the tuple(intercept, slope): intercept is the value of that line at the grid point’s timestamp and slope is its slope per second. Both are NULL if there are not enough samples in the window.
The result of timeSeriesPredictLinearToGrid with the offset t equals intercept + slope * t, and the result of timeSeriesDerivToGrid equals slope. The PromQL function predict_linear is implemented with this function, which allows the prediction offset to differ between grid points, like in predict_linear(v, time()).
The samples can be passed in one of three forms:
- as two arguments
timestampandvalue, where each row holds a single sample; - as two arrays of timestamps and values, where each row holds a whole time series;
- as a single array of
(timestamp, value)tuples, where each row holds a whole time series.
This function is in private preview, enable it by setting
enable_time_series_aggregate_functions=true.start_timestamp— Specifies start of the grid. It can also be a fractional number, or a string containing a number or a date-time text.UInt32orDateTimeorDateTime64orFloat*orDecimal*orStringend_timestamp— Specifies end of the grid. It can also be a fractional number, or a string containing a number or a date-time text.UInt32orDateTimeorDateTime64orFloat*orDecimal*orStringgrid_step— Specifies step of the grid in seconds. It can also be a fractional number, or a string containing a number or a duration like ’15s’ or ‘1m’.UInt32orFloat*orDecimal*orStringstaleness— Specifies the maximum “staleness” in seconds of the considered samples. The staleness window is a left-open and right-closed interval. It can also be a fractional number, or a string containing a number or a duration like ’15s’ or ‘1m’.UInt32orFloat*orDecimal*orString
timestamp— Timestamp of the sample. Can be individual values or arrays.UInt32orDateTimeorDateTime64orArray(UInt32)orArray(DateTime)orArray(DateTime64)value— Value of the time series corresponding to the timestamp. Can be individual values or arrays.Float*orArray(Float*)samples— Samples of the time series passed as an array of tuples(timestamp, value), where the tuple elements have the timestamp and value types listed above. An alternative to passing the timestamps and the values as two separate arguments.Array(Tuple(T1, T2))
(intercept, slope) for each grid point: the value of the fitted line at the grid point’s timestamp and its slope per second. Both elements are NULL if there are not enough samples within the window for a particular grid point. Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))
Examples
Fit a line on the grid [100, 110, 120] and compare with timeSeriesPredictLinearToGrid and timeSeriesDerivToGrid
Query
Response