> ## 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 على بيانات السلاسل الزمنية وفق الشبكة المحددة.

# timeSeriesRateToGrid

## timeSeriesRateToGrid

متاحة بدءًا من: v25.6.0

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

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

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

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

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

**الصيغة**

```sql theme={null}
timeSeriesRateToGrid(start_timestamp, end_timestamp, grid_step, staleness)(timestamp, value)
timeSeriesRateToGrid(start_timestamp, end_timestamp, grid_step, staleness)(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)

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

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

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

تعيد قيم المعدل على الشبكة المحددة. تحتوي Array المُعادة على قيمة واحدة لكل نقطة في الشبكة الزمنية. تكون القيمة NULL إذا لم تكن هناك عينات كافية داخل النافذة لحساب قيمة المعدل لنقطة شبكة معيّنة. [`Array(Nullable(Float64))`](/ar/reference/data-types/array)

**أمثلة**

**الاستخدام الأساسي مع أزواج فردية من الطابع الزمني والقيمة**

```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
SELECT timeSeriesRateToGrid(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
);
```

```response title=Response theme={null}
┌─timeSeriesRateToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,0,0.06666667,0.1,0.055555556,NULL,NULL,0.083333336]                         │
└────────────────────────────────────────────────────────────────────────────────────────┘
```

**استخدام وسيطات من النوع Array**

```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
SELECT timeSeriesRateToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values);
```

```response title=Response theme={null}
┌─timeSeriesRateToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,0,0.06666667,0.1,0.055555556,NULL,NULL,0.083333336]                           │
└──────────────────────────────────────────────────────────────────────────────────────────┘
```
