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

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

# timeSeriesPredictLinearToGrid

<div id="timeSeriesPredictLinearToGrid">
  ## timeSeriesPredictLinearToGrid
</div>

أُضيف في: v25.6.0

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

<Note>
  هذه الدالة تجريبية؛ فعّلها بضبط `allow_experimental_time_series_aggregate_functions=true`.
</Note>

**البنية**

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

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

* `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` — الطابع الزمني للعينة. يمكن أن يكون قيمة مفردة أو مصفوفة. - `value` — قيمة السلسلة الزمنية المقابلة للطابع الزمني. يمكن أن تكون قيمة مفردة أو مصفوفة.

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

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

**أمثلة**

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

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

```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,16.916666,NULL,NULL,16.5]                                                            │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

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

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

```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,16.916666,NULL,NULL,16.5]                                                            │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
