timeSeriesChangesToGrid
Introducido en: v25.6.0
Función de agregación que toma series temporales como pares de marcas de tiempo y valores, y calcula cambios similares a PromQL a partir de estos datos en una cuadrícula temporal regular definida por la marca de tiempo de inicio, la marca de tiempo 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.
Si varias muestras tienen la misma marca de tiempo, solo se utiliza una de ellas: la muestra con el mayor valor. Un valor NaN pierde frente a cualquier otro valor, por lo que un valor NaN solo se utiliza si todas las muestras con esta marca de tiempo son NaN.
Sintaxis
timeSeriesChangesToGrid(start_timestamp, end_timestamp, grid_step, staleness)(timestamp, value)Parámetros
start_timestamp— Especifica el inicio de la cuadrícula. Con un argumento de marca de tiempoDateTime64, también puede ser un número fraccionario o una cadena que contenga un número o un texto de fecha y hora.UInt32oDateTimeoDateTime64oFloat*oDecimal*oStringend_timestamp— Especifica el final de la cuadrícula. Con un argumento de marca de tiempoDateTime64, también puede ser un número fraccionario o una cadena que contenga un número o un texto de fecha y hora.UInt32oDateTimeoDateTime64oFloat*oDecimal*oStringgrid_step— Especifica el paso de la cuadrícula en segundos. Con un argumento de marca de tiempoDateTime64, también puede ser un número fraccionario o una cadena que contenga un número o una duración como '15s' o '1m'.UInt32oFloat*oDecimal*oStringstaleness— Especifica la "desactualización" máxima, en segundos, de las muestras consideradas. Con un argumento de marca de tiempoDateTime64, también puede ser un número fraccionario o una cadena que contenga un número o una duración como '15s' o '1m'.UInt32oFloat*oDecimal*oString
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]
SET allow_experimental_time_series_aggregate_functions = 1;
WITH
-- NOTE: the gap between 130 and 190 is to show how values are filled for ts = 180 according to window parameter
[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 of values corresponding to timestamps above
90 AS start_ts, -- start of timestamp grid
90 + 135 AS end_ts, -- end of timestamp grid
15 AS step_seconds, -- step of timestamp grid
45 AS window_seconds -- "staleness" window
SELECT timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(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
);┌─timeSeriesChangesToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,0,1,1,0,NULL,0,1,2] │
└───────────────────────────────────────────────────────────────────────────────────────────┘La misma consulta con argumentos de tipo Array
SET allow_experimental_time_series_aggregate_functions = 1;
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)(timestamps, values)─┐
│ [NULL,NULL,0,1,1,0,NULL,0,1,2] │
└─────────────────────────────────────────────────────────────────────────────────────────────┘