Introducido en: v25.6.0
Función de agregación que toma series temporales como pares de timestamps y valores, y calcula cambios similares a PromQL a partir de estos datos en una cuadrícula temporal regular definida por el timestamp de inicio, el timestamp de fin y el paso. Para cada punto de la cuadrícula, las muestras para calcular changes se toman dentro de la ventana de tiempo especificada.
Esta función es experimental; habilítela estableciendo allow_experimental_ts_to_grid_aggregate_function=true.
Sintaxis
timeSeriesChangesToGrid(start_timestamp, end_timestamp, grid_step, staleness)(timestamp, value)
Parámetros
start_timestamp — Especifica el inicio de la cuadrícula. - end_timestamp — Especifica el final de la cuadrícula. - grid_step — Especifica el paso de la cuadrícula en segundos. - staleness — Especifica la “desactualización” máxima, en segundos, de las muestras consideradas.
Argumentos
timestamp — Marca de tiempo de la muestra. Puede ser un valor individual o arrays. - value — Valor de la serie temporal correspondiente a la marca de tiempo. Puede ser un valor individual o arrays.
Valor devuelto
Valores de changes en la cuadrícula especificada como un Array(Nullable(Float64)). El array devuelto contiene un valor para cada punto de la cuadrícula temporal. El valor es NULL si no hay muestras dentro de la ventana para calcular el valor de changes para un punto concreto de la cuadrícula.
Ejemplos
Calcular los valores de changes en la cuadrícula [90, 105, 120, 135, 150, 165, 180, 195, 210, 225]
WITH
-- NOTA: el intervalo entre 130 y 190 muestra cómo se rellenan los valores para ts = 180 según el parámetro window
[110, 120, 130, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 5, 5, 8, 12, 13]::Array(Float32) AS values, -- array de valores correspondientes a los timestamps anteriores
90 AS start_ts, -- inicio de la cuadrícula de timestamps
90 + 135 AS end_ts, -- fin de la cuadrícula de timestamps
15 AS step_seconds, -- paso de la cuadrícula de timestamps
45 AS window_seconds -- ventana de "staleness"
SELECT timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)
FROM
(
-- Esta subconsulta convierte arrays de timestamps y valores en filas de `timestamp`, `value`
SELECT
arrayJoin(arrayZip(timestamps, values)) AS ts_and_val,
ts_and_val.1 AS timestamp,
ts_and_val.2 AS value
);
┌─timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,0,1,1,1,NULL,0,1,2] │
└───────────────────────────────────────────────────────────────────────────────────────────┘
La misma consulta con argumentos de tipo Array
WITH
[110, 120, 130, 190, 200, 210, 220, 230]::Array(DateTime) AS timestamps,
[1, 1, 3, 5, 5, 8, 12, 13]::Array(Float32) AS values,
90 AS start_ts,
90 + 135 AS end_ts,
15 AS step_seconds,
45 AS window_seconds
SELECT timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values);
┌─timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,0,1,1,1,NULL,0,1,2] │
└───────────────────────────────────────────────────────────────────────────────────────────┘