> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> دالة تجميع تحسب تنبؤًا خطيًا على غرار PromQL لبيانات السلاسل الزمنية على الشبكة المحددة.

# timeSeriesPredictLinearToGrid

## timeSeriesPredictLinearToGrid

أُضيف في: v25.6.0

دالة تجميع تأخذ بيانات السلاسل الزمنية على شكل أزواج من الطوابع الزمنية والقيم، وتحسب [تنبؤًا خطيًا على غرار PromQL](https://prometheus.io/docs/prometheus/latest/querying/functions/#predict_linear) بإزاحة زمنية محددة عن طابع التنبؤ، وذلك على شبكة زمنية منتظمة تُحدَّد بطابع البداية وطابع النهاية والخطوة. ولكل نقطة على الشبكة، تُؤخذ في الاعتبار العينات الواقعة ضمن النافذة الزمنية المحددة لحساب `predict_linear`.

يمكن تمرير العينات بأحد الأشكال الثلاثة التالية:

* كوسيطتين `timestamp` و`value`، حيث يحتوي كل صف على عينة واحدة؛
* كمصفوفتين من الطوابع الزمنية والقيم، حيث يحتوي كل صف على سلسلة زمنية كاملة؛
* كمصفوفة واحدة من الصفوف المرتبة `(timestamp, value)`، حيث يحتوي كل صف على سلسلة زمنية كاملة.

إذا كانت عدة عينات تحمل الطابع الزمني نفسه، فلا تُستخدم سوى عينة واحدة منها: العينة ذات القيمة الأكبر. وتُستبعد قيمة NaN لصالح أي قيمة أخرى، لذا لا تُستخدم إلا إذا كانت جميع العينات عند هذا الطابع الزمني NaN.

<Note>
  هذه الدالة في مرحلة المعاينة الخاصة؛ فعّلها بضبط `enable_time_series_aggregate_functions=true`.
</Note>

**البنية**

```sql theme={null}
timeSeriesPredictLinearToGrid(start_timestamp, end_timestamp, grid_step, staleness, predict_offset)(timestamp, value)
timeSeriesPredictLinearToGrid(start_timestamp, end_timestamp, grid_step, staleness, predict_offset)(samples)
```

**المعاملات**

* `start_timestamp` — يحدد بداية الشبكة. عند استخدام وسيطة طابع زمني من نوع `DateTime64`، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو نص تاريخ ووقت. [`UInt32`](/ar/reference/data-types/int-uint) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`DateTime64`](/ar/reference/data-types/datetime64) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal*`](/ar/reference/data-types/decimal) أو [`String`](/ar/reference/data-types/string)
* `end_timestamp` — يحدد نهاية الشبكة. عند استخدام وسيطة طابع زمني من نوع `DateTime64`، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو نص تاريخ ووقت. [`UInt32`](/ar/reference/data-types/int-uint) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`DateTime64`](/ar/reference/data-types/datetime64) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal*`](/ar/reference/data-types/decimal) أو [`String`](/ar/reference/data-types/string)
* `grid_step` — يحدد خطوة الشبكة بالثواني. عند استخدام وسيطة طابع زمني من نوع `DateTime64`، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو مدة مثل '15s' أو '1m'. [`UInt32`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal*`](/ar/reference/data-types/decimal) أو [`String`](/ar/reference/data-types/string)
* `staleness` — يحدد الحد الأقصى لـ "التقادم" بالثواني للعينات المأخوذة في الاعتبار. نافذة التقادم فترة مفتوحة من اليسار ومغلقة من اليمين. عند استخدام وسيطة طابع زمني من نوع `DateTime64`، يمكن أن يكون أيضًا رقمًا كسريًا أو سلسلة تحتوي على رقم أو مدة مثل '15s' أو '1m'. [`UInt32`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal*`](/ar/reference/data-types/decimal) أو [`String`](/ar/reference/data-types/string)
* `predict_offset` — يحدد عدد ثواني الإزاحة التي تُضاف إلى وقت التنبؤ. [`UInt32`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal*`](/ar/reference/data-types/decimal) أو [`String`](/ar/reference/data-types/string)

**الوسيطات**

* `timestamp` — الطابع الزمني للعينة. يمكن أن يكون قيمة منفردة أو مصفوفة. [`UInt32`](/ar/reference/data-types/int-uint) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`DateTime64`](/ar/reference/data-types/datetime64) أو [`Array(UInt32)`](/ar/reference/data-types/array) أو [`Array(DateTime)`](/ar/reference/data-types/array) أو [`Array(DateTime64)`](/ar/reference/data-types/array)
* `value` — قيمة السلسلة الزمنية المقابلة للطابع الزمني. يمكن أن تكون قيمة منفردة أو مصفوفة. [`Float*`](/ar/reference/data-types/float) أو [`Array(Float*)`](/ar/reference/data-types/array)
* `samples` — عينات السلسلة الزمنية المُمرَّرة كمصفوفة من الصفوف `(timestamp, value)`، حيث تكون عناصر الصف المرتب من أنواع الطابع الزمني والقيمة المذكورة أعلاه. بديل عن تمرير الطوابع الزمنية والقيم كوسيطين منفصلين. [`Array(Tuple(T1, T2))`](/ar/reference/data-types/array)

**القيمة المُعادة**

قيم `predict_linear` على الشبكة المحددة في صورة `Array(Nullable(Float64))`. تحتوي المصفوفة المُعادة على قيمة واحدة لكل نقطة في الشبكة الزمنية. تكون القيمة NULL إذا لم تكن هناك عينات كافية ضمن النافذة لحساب قيمة المعدل لنقطة معينة في الشبكة.

**أمثلة**

**احسب قيم predict\_linear على الشبكة \[90, 105, 120, 135, 150, 165, 180, 195, 210] بإزاحة قدرها 60 ثانية**

```sql title=Query theme={null}
SET enable_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
);
```

```response title=Response theme={null}
┌─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]                                                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

**نفس الاستعلام مع وسيطات المصفوفة**

```sql title=Query theme={null}
SET enable_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);
```

```response title=Response theme={null}
┌─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]                                                                   │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
