timeSeriesLinearRegressionToGrid
Добавлена в: v26.9.0 Агрегатная функция, которая принимает данные временных рядов в виде пар временных меток и значений и аппроксимирует значения прямой на регулярной временной сетке, заданной начальной временной меткой, конечной временной меткой и шагом. Для каждой точки сетки образцы, попадающие в указанное временное окно, аппроксимируются прямой, и функция возвращает Tuple(intercept, slope): intercept — значение этой прямой в момент времени, соответствующий точке сетки, а slope — её наклон в секунду. Если в окне недостаточно образцов, оба значения равны NULL.
Результат timeSeriesPredictLinearToGrid со смещением t равен intercept + slope * t, а результат timeSeriesDerivToGrid равен slope. На основе этой функции реализована функция PromQL predict_linear, благодаря чему смещение прогноза может различаться для разных точек сетки, как в predict_linear(v, time()).
Образцы можно передавать в одной из трёх форм:
- в виде двух аргументов
timestampиvalue, где каждая строка содержит один образец; - в виде двух массивов временных меток и значений, где каждая строка содержит целый временной ряд;
- в виде одного массива Tuple
(timestamp, value), где каждая строка содержит целый временной ряд.
Эта функция находится в закрытой предварительной версии. Чтобы включить её, установите
enable_time_series_aggregate_functions=true.start_timestamp— Задаёт начало сетки. Также может быть дробным числом или строкой, содержащей число или дату и время в текстовом виде.UInt32илиDateTimeилиDateTime64илиFloat*илиDecimal*илиStringend_timestamp— Задаёт конец сетки. Также может быть дробным числом или строкой, содержащей число или дату и время в текстовом виде.UInt32илиDateTimeилиDateTime64илиFloat*илиDecimal*илиStringgrid_step— Задаёт шаг сетки в секундах. Также может быть дробным числом или строкой, содержащей число или длительность, например ’15s’ или ‘1m’.UInt32илиFloat*илиDecimal*илиStringstaleness— Задаёт максимальную давность (staleness) учитываемых образцов в секундах. Окно давности представляет собой интервал, открытый слева и закрытый справа. Также может быть дробным числом или строкой, содержащей число или длительность, например ’15s’ или ‘1m’.UInt32илиFloat*илиDecimal*илиString
timestamp— временная метка образца. Может быть отдельным значением или массивом.UInt32илиDateTimeилиDateTime64илиArray(UInt32)илиArray(DateTime)илиArray(DateTime64)value— значение временного ряда, соответствующее временной метке. Может быть отдельным значением или массивом.Float*илиArray(Float*)samples— образцы временного ряда в виде массива Tuple(timestamp, value), элементы которых имеют указанные выше типы временной метки и значения. Альтернатива передаче временных меток и значений двумя отдельными аргументами.Array(Tuple(T1, T2))
(intercept, slope) для каждой точки сетки: значение аппроксимирующей прямой во временной метке точки сетки и её наклон в секунду. Если для конкретной точки сетки в окне недостаточно образцов, оба элемента равны NULL. Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))
Примеры
Построение прямой на сетке [100, 110, 120] и сравнение с timeSeriesPredictLinearToGrid и timeSeriesDerivToGrid
Query
Response