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

> تُطابِق خطًا مستقيمًا مع قيم السلاسل الزمنية على شبكة زمنية منتظمة.

# timeSeriesLinearRegressionToGrid

<h2 id="timeSeriesLinearRegressionToGrid">
  timeSeriesLinearRegressionToGrid
</h2>

أُضيف في: v26.9.0

دالة تجميعية تستقبل بيانات السلاسل الزمنية على هيئة أزواج من الطوابع الزمنية والقيم، وتُوفِّق خطًا مستقيمًا مع القيم على شبكة زمنية منتظمة تُحدَّد بطابع زمني للبداية وطابع زمني للنهاية وخطوة. فلكل نقطة على الشبكة، تُوفَّق العينات الواقعة ضمن النافذة الزمنية المحددة بخط مستقيم، وتُرجع الدالة الـ Tuple ‏`(intercept, slope)`، حيث يمثّل `intercept` قيمة ذلك الخط عند الطابع الزمني لنقطة الشبكة، ويمثّل `slope` ميله لكل ثانية. وتكون القيمتان كلتاهما NULL إذا لم تتوفر في النافذة عينات كافية.

تساوي نتيجة `timeSeriesPredictLinearToGrid` مع الإزاحة `t` القيمة `intercept + slope * t`، وتساوي نتيجة `timeSeriesDerivToGrid` القيمة `slope`. وتُنفَّذ دالة PromQL ‏`predict_linear` باستخدام هذه الدالة، مما يسمح باختلاف إزاحة التنبؤ من نقطة شبكة إلى أخرى، كما في `predict_linear(v, time())`.

يمكن تمرير العينات بإحدى ثلاث صيغ:

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

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

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

**الصيغة**

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

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

* `start_timestamp` — يحدد بداية الشبكة الزمنية. ويمكن أن يكون أيضًا عددًا كسريًا، أو string يحتوي على عدد أو على نص يمثل تاريخًا ووقتًا. [`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` — يحدد نهاية الشبكة الزمنية. ويمكن أن يكون أيضًا عددًا كسريًا، أو string يحتوي على عدد أو على نص يمثل تاريخًا ووقتًا. [`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` — يحدد خطوة الشبكة الزمنية بالثواني. ويمكن أن يكون أيضًا عددًا كسريًا، أو string يحتوي على عدد أو على مدة مثل '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` — يحدد الحد الأقصى لـ"تقادم" العينات المأخوذة في الحسبان، مقدَّرًا بالثواني. ونافذة التقادم فاصل زمني مفتوح من اليسار ومغلق من اليمين. ويمكن أن يكون أيضًا عددًا كسريًا، أو string يحتوي على عدد أو على مدة مثل '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)

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

* `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` — عينات السلسلة الزمنية المُمرَّرة على هيئة مصفوفة من قيم Tuple `(timestamp, value)`، تكون فيها عناصر الـTuple من أنواع الطابع الزمني والقيمة المذكورة أعلاه. وهي بديل عن تمرير الطوابع الزمنية والقيم في وسيطتين منفصلتين. [`Array(Tuple(T1, T2))`](/ar/reference/data-types/array)

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

الـTuple `(intercept, slope)` لكل نقطة في الشبكة: قيمة الخط المُلائَم عند الطابع الزمني لنقطة الشبكة، وميله في الثانية. يكون كلا العنصرين NULL إذا لم تتوفر عينات كافية ضمن النافذة لنقطة شبكة معينة. [`Array(Tuple(intercept Nullable(Float64), slope Nullable(Float64)))`](/ar/reference/data-types/array)

**أمثلة**

**ملاءمة خط على الشبكة \[100, 110, 120] ومقارنته بـ timeSeriesPredictLinearToGrid وtimeSeriesDerivToGrid**

```sql title=Query theme={null}
SET enable_time_series_aggregate_functions = 1;
WITH
    [100, 110, 120]::Array(DateTime) AS timestamps,
    [10, 20, 30]::Array(Float64) AS values,
    timeSeriesLinearRegressionToGrid(100, 120, 10, 30)(timestamps, values) AS regression
SELECT
    regression,
    arrayMap(r -> r.intercept + r.slope * 60, regression) AS predict_linear_60,
    arrayMap(r -> r.slope, regression) AS deriv;
```

```response title=Response theme={null}
┌─regression──────────────────┬─predict_linear_60─┬─deriv──────┐
│ [(NULL,NULL),(20,1),(30,1)] │ [NULL,80,90]      │ [NULL,1,1] │
└─────────────────────────────┴───────────────────┴────────────┘
```
