timeSeriesPredictLinearToGrid
أُضيف في: v25.6.0
دالة تجميع تأخذ بيانات السلاسل الزمنية على شكل أزواج من الطوابع الزمنية والقيم، وتحسب تنبؤًا خطيًا على غرار PromQL بإزاحة زمنية محددة عن طابع التنبؤ، وذلك على شبكة زمنية منتظمة تُحدَّد بطابع البداية وطابع النهاية والخطوة. ولكل نقطة على الشبكة، تُؤخذ في الاعتبار العينات الواقعة ضمن النافذة الزمنية المحددة لحساب predict_linear.
إذا كانت عدة عينات تحمل الطابع الزمني نفسه، فلا تُستخدم سوى عينة واحدة منها: العينة ذات القيمة الأكبر. وتُستبعد قيمة NaN لصالح أي قيمة أخرى، لذا لا تُستخدم إلا إذا كانت جميع العينات عند هذا الطابع الزمني NaN.
البنية
timeSeriesPredictLinearToGrid(start_timestamp, end_timestamp, grid_step, staleness, predict_offset)(timestamp, value)المعاملات
start_timestamp— يحدد بداية الشبكة. عند استخدام وسيطة طابع زمني من نوعDateTime64، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو نص تاريخ ووقت.UInt32أوDateTimeأوDateTime64أوFloat*أوDecimal*أوStringend_timestamp— يحدد نهاية الشبكة. عند استخدام وسيطة طابع زمني من نوعDateTime64، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو نص تاريخ ووقت.UInt32أوDateTimeأوDateTime64أوFloat*أوDecimal*أوStringgrid_step— يحدد خطوة الشبكة بالثواني. عند استخدام وسيطة طابع زمني من نوعDateTime64، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو مدة مثل '15s' أو '1m'.UInt32أوFloat*أوDecimal*أوStringstaleness— يحدد الحد الأقصى لـ "التقادم" بالثواني للعينات المأخوذة في الاعتبار. نافذة التقادم فترة مفتوحة من اليسار ومغلقة من اليمين. عند استخدام وسيطة طابع زمني من نوعDateTime64، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو مدة مثل '15s' أو '1m'.UInt32أوFloat*أوDecimal*أوStringpredict_offset— يحدد عدد ثواني الإزاحة التي تُضاف إلى وقت التنبؤ.UInt32أوFloat*أوDecimal*أوString
الوسيطات
timestamp— الطابع الزمني للعينة. يمكن أن يكون قيمة مفردة أو مصفوفة. -value— قيمة السلسلة الزمنية المقابلة للطابع الزمني. يمكن أن تكون قيمة مفردة أو مصفوفة.
القيمة المُعادة
قيم predict_linear على الشبكة المحددة على هيئة Array(Nullable(Float64)). تحتوي المصفوفة المُعادة على قيمة واحدة لكل نقطة في الشبكة الزمنية. تكون القيمة NULL إذا لم تتوفر عينات كافية ضمن النافذة لحساب قيمة المعدل لنقطة معينة في الشبكة.
أمثلة
احسب قيم predict_linear على الشبكة [90, 105, 120, 135, 150, 165, 180, 195, 210] بإزاحة قدرها 60 ثانية
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] │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘نفس الاستعلام مع وسيطات المصفوفة
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] │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘