Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

timeSeriesPredictLinearToGrid

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 timestamp DateTime64, também pode ser um número fracionário ou uma string que contenha um número ou texto de data e hora. UInt32 ou DateTime ou DateTime64 ou Float* ou Decimal* ou String
  • end_timestamp — Especifica o fim da grade. Quando recebe um argumento de timestamp DateTime64, também pode ser um número fracionário ou uma string que contenha um número ou texto de data e hora. UInt32 ou DateTime ou DateTime64 ou Float* ou Decimal* ou String
  • grid_step — Especifica o passo da grade em segundos. Quando recebe um argumento de timestamp DateTime64, 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'. UInt32 ou Float* ou Decimal* ou String
  • staleness — 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 timestamp DateTime64, 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'. UInt32 ou Float* ou Decimal* ou String
  • predict_offset — Especifica o número de segundos de deslocamento a adicionar ao instante da previsão. UInt32 ou Float* ou Decimal* ou String

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]                                                                   │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Navigation