timeSeriesDeltaToGrid
timeSeriesDeltaToGrid
導入バージョン: v25.6.0
この集約関数は、タイムスタンプと値のペアからなる時系列データを受け取り、開始タイムスタンプ・終了タイムスタンプ・ステップで定義される等間隔の時間グリッド上で、このデータから PromQL 風の delta を計算します。グリッド上の各ポイントに対して、delta の計算に用いるサンプルは、指定された時間ウィンドウ内のものが対象になります。
この関数は実験的な機能です。allow_experimental_ts_to_grid_aggregate_function=true を設定して有効化してください。
Syntax
構文
timeSeriesDeltaToGrid(start_timestamp, end_timestamp, grid_step, staleness)(timestamp, value)
Parameters
start_timestamp — グリッドの開始を指定します。UInt32 または DateTime
end_timestamp — グリッドの終了を指定します。UInt32 または DateTime
grid_step — グリッドのステップを秒単位で指定します。UInt32
staleness — 対象とするサンプルの最大の「古さ (staleness) 」を秒単位で指定します。staleness ウィンドウは左開・右閉の区間です。UInt32
Arguments
timestamp — サンプルのタイムスタンプ。個々の値または配列を指定できます。UInt32 または DateTime または Array(UInt32) または Array(DateTime)
value — timestamp に対応する時系列の値。個々の値または配列を指定できます。Float* または Array(Float*)
Returned value
指定されたグリッド上の delta 値を返します。返される配列には、各時間グリッドポイントに対して 1 つの値が含まれます。特定のグリッドポイントについて、ウィンドウ内に delta 値を計算するのに十分なサンプルが存在しない場合、その値は NULL になります。Array(Nullable(Float64))
Examples
個々の timestamp-value ペアを用いた基本的な使用例
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
SELECT timeSeriesDeltaToGrid(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
);
┌─timeSeriesDeltaToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐ │ [NULL,NULL,0,3,4.5,3.75,NULL,NULL,3.75] │ └───────────────────────────────────────────────────────────────────────────────────────┘
配列引数の利用
-- it is possible to pass multiple samples of timestamps and values as Arrays of equal size 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 SELECT timeSeriesDeltaToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values);
Parameters
start_timestamp— グリッドの開始を指定します。UInt32またはDateTimeend_timestamp— グリッドの終了を指定します。UInt32またはDateTimegrid_step— グリッドのステップを秒単位で指定します。UInt32staleness— 対象とするサンプルの最大の「古さ (staleness) 」を秒単位で指定します。staleness ウィンドウは左開・右閉の区間です。UInt32
Arguments
timestamp— サンプルのタイムスタンプ。個々の値または配列を指定できます。UInt32またはDateTimeまたはArray(UInt32)またはArray(DateTime)value—timestampに対応する時系列の値。個々の値または配列を指定できます。Float*またはArray(Float*)
Returned value
指定されたグリッド上の delta 値を返します。返される配列には、各時間グリッドポイントに対して 1 つの値が含まれます。特定のグリッドポイントについて、ウィンドウ内に delta 値を計算するのに十分なサンプルが存在しない場合、その値は NULL になります。Array(Nullable(Float64))
Examples
個々の timestamp-value ペアを用いた基本的な使用例
配列引数の使用