> ## 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.

> تحسب `stddev_over_time` بأسلوب مماثل لـ PromQL على شبكة زمنية منتظمة.

# timeSeriesStddevToGrid

<h2 id="timeSeriesStddevToGrid">
  timeSeriesStddevToGrid
</h2>

أُضيف في: v26.10.0

دالة تجميعية تستقبل بيانات السلاسل الزمنية على هيئة أزواج من الطوابع الزمنية والقيم، وتحسب منها [stddev\_over\_time على غرار PromQL](https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time) (الانحراف المعياري للمجتمع الإحصائي) على شبكة زمنية منتظمة يحددها طابع زمني للبداية وطابع زمني للنهاية وخطوة. ولكل نقطة على الشبكة، تُعتمد العينات الواقعة ضمن النافذة الزمنية المحددة لحساب `stddev_over_time`.

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

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

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

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

**الصيغة**

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

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

* `start_timestamp` — يحدد بداية الشبكة الزمنية. ويمكن أن يكون أيضًا عددًا كسريًا، أو سلسلة نصية تحتوي على عدد أو نص تاريخ ووقت. [`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` — يحدد نهاية الشبكة الزمنية. ويمكن أن يكون أيضًا عددًا كسريًا، أو سلسلة نصية تحتوي على عدد أو نص تاريخ ووقت. [`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` — يحدد خطوة الشبكة الزمنية بالثواني. ويمكن أن يكون أيضًا عددًا كسريًا، أو سلسلة نصية تحتوي على عدد أو مدة مثل '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` — يحدد الحد الأقصى لتقادم العينات المأخوذة في الحسبان، بالثواني. ونافذة التقادم فاصل زمني مفتوح من اليسار ومغلق من اليمين. ويمكن أن يكون أيضًا عددًا كسريًا، أو سلسلة نصية تحتوي على عدد أو مدة مثل '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` — عينات السلسلة الزمنية المُمرَّرة على هيئة مصفوفة من الصفوف المرتبة `(timestamp, value)`، حيث تكون عناصر الصف المرتب من نوعَي الطابع الزمني والقيمة المذكورين أعلاه. وهي بديل عن تمرير الطوابع الزمنية والقيم كوسيطتين منفصلتين. [`Array(Tuple(T1, T2))`](/ar/reference/data-types/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 timeSeriesStddevToGrid(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}
┌─timeSeriesStddevToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,0,0.9428090415820634,1.299038105676658,0.5,0,0,1.4142135623730951]            │
└──────────────────────────────────────────────────────────────────────────────────────────┘
```

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

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

```response title=Response theme={null}
┌─timeSeriesStddevToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,0,0.9428090415820634,1.299038105676658,0.5,0,0,1.4142135623730951]              │
└────────────────────────────────────────────────────────────────────────────────────────────┘
```
