timeSeriesPredictLinearToGrid
Introduzida em: v25.6.0
Função de agregação que recebe dados de séries temporais como pares de timestamps e valores e calcula uma previsão linear no estilo do PromQL, com um deslocamento de timestamp de previsão especificado, em uma grade temporal regular definida pelo timestamp inicial, pelo timestamp final e pelo passo. Para cada ponto da grade, são consideradas as amostras dentro da janela de tempo especificada para calcular predict_linear.
Se várias amostras tiverem o mesmo timestamp, apenas uma delas será usada: a amostra com o maior valor. Um valor NaN perde para qualquer outro valor, portanto, um valor NaN é usado somente se todas as amostras nesse timestamp forem NaN.
Sintaxe
timeSeriesPredictLinearToGrid(start_timestamp, end_timestamp, grid_step, staleness, predict_offset)(timestamp, value)Parâmetros
start_timestamp— Especifica o início da grade. Quando recebe um argumento de timestampDateTime64, também pode ser um número fracionário ou uma string que contenha um número ou texto de data e hora.UInt32ouDateTimeouDateTime64ouFloat*ouDecimal*ouStringend_timestamp— Especifica o fim da grade. Quando recebe um argumento de timestampDateTime64, também pode ser um número fracionário ou uma string que contenha um número ou texto de data e hora.UInt32ouDateTimeouDateTime64ouFloat*ouDecimal*ouStringgrid_step— Especifica o passo da grade em segundos. Quando recebe um argumento de timestampDateTime64, também pode ser um número fracionário ou uma string que contenha um número ou uma duração como '15s' ou '1m'.UInt32ouFloat*ouDecimal*ouStringstaleness— Especifica a defasagem máxima, em segundos, das amostras consideradas. A janela de defasagem é um intervalo aberto à esquerda e fechado à direita. Quando recebe um argumento de timestampDateTime64, também pode ser um número fracionário ou uma string que contenha um número ou uma duração como '15s' ou '1m'.UInt32ouFloat*ouDecimal*ouStringpredict_offset— Especifica o número de segundos de deslocamento a adicionar ao instante da previsão.UInt32ouFloat*ouDecimal*ouString
Argumentos
timestamp— Timestamp da amostra. Pode consistir em valores individuais ou arrays. -value— Valor da série temporal correspondente ao timestamp. Pode consistir em valores individuais ou arrays.
Valor retornado
Valores de predict_linear na grade especificada como um Array(Nullable(Float64)). O array retornado contém um valor para cada ponto da grade temporal. O valor é NULL se não houver amostras suficientes na janela para calcular o valor da taxa em determinado ponto da grade.
Exemplos
Calcule valores de predict_linear na grade [90, 105, 120, 135, 150, 165, 180, 195, 210] com um deslocamento de 60 segundos
SET allow_experimental_time_series_aggregate_functions = 1;
WITH
-- NOTE: the gap between 140 and 190 is to show how values are filled for ts = 150, 165, 180 according to window parameter
[110, 120, 130, 140, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 4, 5, 5, 8, 12, 13]::Array(Float32) AS values, -- array of values corresponding to timestamps above
90 AS start_ts, -- start of timestamp grid
90 + 120 AS end_ts, -- end of timestamp grid
15 AS step_seconds, -- step of timestamp grid
45 AS window_seconds, -- "staleness" window
60 AS predict_offset -- prediction time offset
SELECT timeSeriesPredictLinearToGrid(start_ts, end_ts, step_seconds, window_seconds, predict_offset)(timestamp, value)
FROM
(
-- This subquery converts arrays of timestamps and values into rows of `timestamp`, `value`
SELECT
arrayJoin(arrayZip(timestamps, values)) AS ts_and_val,
ts_and_val.1 AS timestamp,
ts_and_val.2 AS value
);┌─timeSeriesPredictLinearToGrid(start_ts, end_ts, step_seconds, window_seconds, predict_offset)(timestamp, value)─┐
│ [NULL,NULL,1,9.166667,11.6,12.5,NULL,NULL,16.5] │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘Mesma consulta com argumentos de array
SET allow_experimental_time_series_aggregate_functions = 1;
WITH
[110, 120, 130, 140, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 4, 5, 5, 8, 12, 13]::Array(Float32) AS values,
90 AS start_ts,
90 + 120 AS end_ts,
15 AS step_seconds,
45 AS window_seconds,
60 AS predict_offset
SELECT timeSeriesPredictLinearToGrid(start_ts, end_ts, step_seconds, window_seconds, predict_offset)(timestamps, values);┌─timeSeriesPredictLinearToGrid(start_ts, end_ts, step_seconds, window_seconds, predict_offset)(timestamps, values)─┐
│ [NULL,NULL,1,9.166667,11.6,12.5,NULL,NULL,16.5] │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘