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

> تحسب `last_over_time` على غرار PromQL على شبكة زمنية منتظمة.

# timeSeriesLastToGrid

<h2 id="timeSeriesLastToGrid">
  timeSeriesLastToGrid
</h2>

أُضيف في: v25.6.0

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

الاسم البديل: `timeSeriesResampleToGridWithStaleness`.

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

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

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

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

**الصيغة**

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

**الأسماء البديلة**: `timeSeriesResampleToGridWithStaleness`

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

* `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_window` — يحدد الحد الأقصى لتقادم أحدث عينة بالثواني. ويمكن أيضًا أن يكون عددًا كسريًا، أو سلسلة نصية تحتوي على عدد أو مدة مثل '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)

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

تُعيد قيم السلسلة الزمنية بعد إعادة أخذ عيناتها وفق الشبكة المحددة، بنفس نوع `value`. وتحتوي المصفوفة المعادة على قيمة واحدة لكل نقطة في الشبكة الزمنية، وتكون القيمة NULL إذا لم توجد عينة لنقطة معينة في الشبكة. [`Array(Nullable(Float*))`](/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 staleness 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
    30 AS window_seconds  -- "staleness" window
SELECT timeSeriesLastToGrid(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}
┌─timeSeriesLastToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamp, value)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                           │
└────────────────────────────────────────────────────────────────────────────────────────┘
```

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

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

```response title=Response theme={null}
┌─timeSeriesLastToGrid(start_ts, end_ts, step_seconds, window_seconds)(timestamps, values)─┐
│ [NULL,NULL,1,3,4,4,NULL,5,8]                                                             │
└──────────────────────────────────────────────────────────────────────────────────────────┘
```
