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

> توثيق لفئة الدوال "الأخرى"

# الدوال الأخرى

export const DeprecatedBadge = () => {
  return <div className="deprecatedBadge">
            <div className="deprecatedIcon">
            <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M13 0H1C0.734784 0 0.48043 0.105357 0.292893 0.292893C0.105357 0.48043 0 0.734784 0 1V2.5C0 2.76522 0.105357 3.01957 0.292893 3.20711C0.48043 3.39464 0.734784 3.5 1 3.5V9C1 9.26522 1.10536 9.51957 1.29289 9.70711C1.48043 9.89464 1.73478 10 2 10H12C12.2652 10 12.5196 9.89464 12.7071 9.70711C12.8946 9.51957 13 9.26522 13 9V3.5C13.2652 3.5 13.5196 3.39464 13.7071 3.20711C13.8946 3.01957 14 2.76522 14 2.5V1C14 0.734784 13.8946 0.48043 13.7071 0.292893C13.5196 0.105357 13.2652 0 13 0ZM12 9H2V3.5H12V9ZM13 2.5H1V1H13V2.5ZM5 5.5C5 5.36739 5.05268 5.24021 5.14645 5.14645C5.24021 5.05268 5.36739 5 5.5 5H8.5C8.63261 5 8.75979 5.05268 8.85355 5.14645C8.94732 5.24021 9 5.36739 9 5.5C9 5.63261 8.94732 5.75979 8.85355 5.85355C8.75979 5.94732 8.63261 6 8.5 6H5.5C5.36739 6 5.24021 5.94732 5.14645 5.85355C5.05268 5.75979 5 5.63261 5 5.5Z" fill="currentColor" />
            </svg>
        </div>
            ميزة متقادمة
        </div>;
};

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            غير مدعوم في ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            ميزة تجريبية. <u><a href="/docs/beta-and-experimental-features#experimental-features">تعرّف على المزيد.</a></u>
        </div>;
};

<Note>
  يتم إنشاء توثيق الدوال أدناه بالاعتماد على جدول النظام `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

قُدِّم في: v20.1.0

تعيد اسم النطاق المؤهل بالكامل لخادم ClickHouse.

**الصيغة**

```sql theme={null}
FQDN()
```

**الأسماء المستعارة**: `fullHostName`

**الوسائط**

* لا شيء.

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

تعيد اسم النطاق المؤهل بالكامل لخادم ClickHouse. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT fqdn()
```

```response title=Response theme={null}
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘
```

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

استُحدث في: v1.1.0

يفسّر العدد [`UInt64`](/ar/reference/data-types/int-uint) على أنه عنوان MAC بتنسيق big-endian.
ويُرجع عنوان MAC المقابل بالتنسيق `AA:BB:CC:DD:EE:FF` (قيم مفصولة بنقطتين بالصيغة الست عشرية) كسلسلة نصية.

**الصياغة**

```sql theme={null}
MACNumToString(num)
```

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

* `num` — عدد من نوع UInt64. [`UInt64`](/ar/reference/data-types/int-uint)

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

يُرجع عنوان MAC بالتنسيق AA:BB:CC:DD:EE:FF. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT MACNumToString(149809441867716) AS mac_address;
```

```response title=Response theme={null}
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘
```

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

أُضيفت في: v1.1.0

الدالة العكسية لـ MACNumToString. إذا كان عنوان MAC بتنسيق غير صالح، فستُرجع 0.

**الصياغة**

```sql theme={null}
MACStringToNum(s)
```

**الوسائط**

* `s` — سلسلة نصية لعنوان MAC. [`String`](/ar/reference/data-types/string)

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

يعيد عددًا من النوع UInt64. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
```

```response title=Response theme={null}
1108152157446
```

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

أُضيف في: v1.1.0

إذا أُعطي عنوان MAC بالتنسيق AA:BB:CC:DD:EE:FF (أرقام مفصولة بنقطتين بالصيغة السداسية العشرية)، فإنه يعيد أول ثلاثة أوكتيتات على هيئة رقم UInt64. وإذا كان عنوان MAC بتنسيق غير صالح، فإنه يعيد 0.

**بنية الجملة**

```sql theme={null}
MACStringToOUI(s)
```

**الوسائط**

* `s` — عنوان MAC كسلسلة نصية. [`String`](/ar/reference/data-types/string)

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

أول ثلاث ثمانيات على هيئة عدد من نوع UInt64. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
```

```response title=Response theme={null}
20566
```

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

أُضيفت في: v25.11.0

إذا جرى تبديل مستخدم الجلسة باستخدام الأمر EXECUTE AS، فستُرجع هذه الدالة اسم المستخدم الأصلي الذي استُخدم للمصادقة وإنشاء الجلسة.
الاسم البديل: authUser()

**البنية**

```sql theme={null}
authenticatedUser()
```

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

**الوسائط**

* لا يوجد.

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

اسم المستخدم الذي تمت المصادقة عليه. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
```

```response title=Response theme={null}
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘
```

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

استُحدث في: v1.1.0

ينشئ مخططًا شريطيًا.
يرسم شريطًا بعرض يتناسب مع (x - min)، ويكون مساويًا لعدد المحارف في width عندما تكون x = max.
يُرسَم الشريط بدقة تصل إلى ثُمن المحرف.

**البنية**

```sql theme={null}
bar(x, min, max[, width])
```

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

* `x` — الحجم المطلوب عرضه. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `min` — الحد الأدنى للقيمة. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `max` — الحد الأقصى للقيمة. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `width` — اختياري. عرض الشريط بالأحرف. القيمة الافتراضية هي `80`. [`const (U)Int*`](/ar/reference/data-types/int-uint) أو [`const Float*`](/ar/reference/data-types/float) أو [`const Decimal`](/ar/reference/data-types/decimal)

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

تُرجع سلسلة تمثل شريطًا مرسومًا بأحرف Unicode. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600000, 20) AS bar
FROM test.hits
GROUP BY h
ORDER BY h ASC
```

```response title=Response theme={null}
┌──h─┬──────c─┬─bar────────────────┐
│  0 │ 292907 │ █████████▋         │
│  1 │ 180563 │ ██████             │
│  2 │ 114861 │ ███▋               │
│  3 │  85069 │ ██▋                │
│  4 │  68543 │ ██▎                │
│  5 │  78116 │ ██▌                │
│  6 │ 113474 │ ███▋               │
│  7 │ 170678 │ █████▋             │
│  8 │ 278380 │ █████████▎         │
│  9 │ 391053 │ █████████████      │
│ 10 │ 457681 │ ███████████████▎   │
│ 11 │ 493667 │ ████████████████▍  │
│ 12 │ 509641 │ ████████████████▊  │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊  │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍  │
│ 23 │ 400397 │ █████████████▎     │
└────┴────────┴────────────────────┘
```

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

أُضيف في: v1.1.0

يعيد رقمًا تسلسليًا يزداد باطراد لـ[الكتلة](/ar/resources/develop-contribute/introduction/architecture#block) التي تحتوي على الصف.
ويُحدَّث رقم الكتلة المُعاد قدر الإمكان، أي قد لا يكون دقيقًا تمامًا.

**الصيغة**

```sql theme={null}
blockNumber()
```

**الوسائط**

* لا شيء.

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

الرقم التسلسلي لكتلة البيانات التي يقع فيها الصف. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘
```

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

أُضيف في: v20.3.0

يعيد الحجم غير المضغوط، بالبايت، لكتلة من القيم على القرص.

**الصياغة**

```sql theme={null}
blockSerializedSize(x1[, x2[, ...]])
```

**الوسائط**

* `x1[, x2, ...]` — أي عدد من القيم المطلوب الحصول على الحجم غير المضغوط للكتلة الخاصة بها. [`Any`](/ar/reference/data-types/index)

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

يعيد عدد البايتات التي ستُكتب إلى القرص لكتلة من القيم من دون ضغط. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT blockSerializedSize(maxState(1)) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

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

أُضيفت في: v1.1.0

في ClickHouse، تُعالَج الاستعلامات على شكل [كتل](/ar/resources/develop-contribute/introduction/architecture#block) (chunks).
تُرجِع هذه الدالة حجم الكتلة (عدد الصفوف) التي استُدعيت عليها.

**الصيغة**

```sql theme={null}
blockSize()
```

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

* لا يوجد.

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

يعيد عدد الصفوف في الكتلة الحالية. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT blockSize()
FROM system.numbers LIMIT 5
```

```response title=Response theme={null}
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘
```

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

قُدِّمت في: v20.5.0

تُرجِع معرّف البناء الذي يُنشئه مصرّف للملف التنفيذي لخادم ClickHouse قيد التشغيل.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم مرتبطة بكل shard.
وإلا فإنها تُنتج قيمة ثابتة.

**الصيغة**

```sql theme={null}
buildId()
```

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

* لا توجد.

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

يُرجع معرّف البناء. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT buildId()
```

```response title=Response theme={null}
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘
```

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

أُضيفت في: v21.1.0

تعيد تقديرًا لحجم البايت غير المضغوط لوسيطاتها في الذاكرة.
بالنسبة إلى الوسيطات من النوع `String`، تعيد الدالة طول السلسلة + 8 (الطول).
إذا كانت للدالة عدة وسيطات، فإنها تحسب مجموع أحجام البايت الخاصة بها.

**البنية**

```sql theme={null}
byteSize(arg1[, arg2, ...])
```

**الوسائط**

* `arg1[, arg2, ...]` — قيم من أي نوع بيانات يُراد تقدير حجمها بالبايت في صورتها غير المضغوطة. [`Any`](/ar/reference/data-types/index)

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

تعيد تقديرًا لحجم الوسائط بالبايت في الذاكرة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT byteSize('string')
```

```response title=Response theme={null}
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘
```

**وسائط متعددة**

```sql title=Query theme={null}
SELECT byteSize(NULL, 1, 0.3, '')
```

```response title=Response theme={null}
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘
```

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

أُضيف في: v22.9.0

قيِّم نموذج CatBoost خارجيًا. [CatBoost](https://catboost.ai) مكتبة تعزيز تدرّجي مفتوحة المصدر طوّرتها Yandex للتعلّم الآلي.
تقبل مسارًا إلى نموذج CatBoost ووسيطات النموذج (السمات).

**المتطلبات المسبقة**

1. ابنِ مكتبة تقييم CatBoost

قبل تقييم نماذج CatBoost، يجب إتاحة المكتبة `libcatboostmodel.<so|dylib>`. راجع [توثيق CatBoost](https://catboost.ai/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.html) لمعرفة كيفية تجميعها.

بعد ذلك، حدِّد المسار إلى `libcatboostmodel.<so|dylib>` في تهيئة ClickHouse:

```xml theme={null}
<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>
```

لأسباب تتعلق بالأمان والعزل، لا يُجرى تقييم النموذج داخل عملية الخادم، بل داخل عملية clickhouse-library-bridge.
عند أول تنفيذ للدالة `catboostEvaluate()`، يبدأ الخادم عملية جسر المكتبة إذا لم تكن قيد التشغيل بالفعل. وتتواصل العمليتان
باستخدام واجهة HTTP. يُستخدم المنفذ `9012` افتراضيًا. ويمكن تحديد منفذ مختلف كما يلي - ويكون ذلك مفيدًا إذا كان المنفذ
`9012` مخصّصًا بالفعل لخدمة مختلفة.

```xml theme={null}
<library_bridge>
    <port>9019</port>
</library_bridge>
```

2. درّب نموذج CatBoost باستخدام libcatboost

راجع [تدريب النماذج وتطبيقها](https://catboost.ai/docs/features/training.html#training) لمعرفة كيفية تدريب نماذج CatBoost انطلاقًا من مجموعة بيانات تدريب.

**الصيغة**

```sql theme={null}
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
```

**الوسائط**

* `path_to_model` — مسار نموذج catboost. [`const String`](/ar/reference/data-types/string)
* `feature` — سمة واحدة أو أكثر من سمات/وسائط النموذج. [`Float*`](/ar/reference/data-types/float)

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

يعيد نتيجة تقييم النموذج. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**catboostEvaluate**

```sql title=Query theme={null}
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
```

```response title=Response theme={null}
4.695691092573497
```

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

أُضيفت في: v26.2.0

تحوّل لونًا من فضاء الألوان الإدراكي OKLab إلى فضاء الألوان sRGB.

يُحدَّد لون الإدخال في فضاء الألوان OKLab. إذا كانت قيم الإدخال خارج
نطاقات OKLab المعتادة، فتُحدَّد النتيجة وفقًا للتنفيذ.

يستخدم OKLab ثلاثة مكوّنات:

* L: الإضاءة الإدراكية (عادةً في النطاق \[0..1])
  * a: المحور التقابلي الأخضر-الأحمر
  * b: المحور التقابلي الأزرق-الأصفر

مكوّنا a و b غير محدودين نظريًا، لكنهما عمليًا يقعان بين -0.4 و 0.4.
صُمّم OKLab ليكون موحّدًا إدراكيًا
مع بقائه قليل الكلفة حسابيًا.

يُفترض أن يكون هذا التحويل معكوسًا لـ colorSRGBToOKLAB، ويتكوّن من
المراحل التالية:

1. التحويل من OKLab إلى Linear sRGB.
   2\) التحويل من Linear sRGB إلى sRGB مُرمَّز بالغاما.

تحدّد وسيطة gamma الاختيارية الأس المستخدم عند التحويل من Linear
sRGB إلى قيم RGB مُرمَّزة بالغاما. وإذا لم تُحدَّد، فتُستخدم قيمة gamma افتراضية
لضمان الاتساق مع colorSRGBToOKLAB.

لمزيد من المعلومات حول فضاء الألوان OKLab وعلاقته بـ sRGB، راجع [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab)
.

**الصياغة**

```sql theme={null}
colorOKLABToSRGB(tuple [, gamma])
```

**الوسائط**

* `tuple` — قيمة `Tuple` تتألف من ثلاث قيم رقمية هي `L` و`a` و`b`، حيث تقع `L` ضمن النطاق `[0...1]`. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)
* `gamma` — اختياري. الأسّ المستخدم لتحويل Linear sRGB مرة أخرى إلى sRGB عبر تطبيق `(x ^ (1 / gamma)) * 255` على كل قناة `x`. القيمة الافتراضية هي `2.2`. [`Float64`](/ar/reference/data-types/float)

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

تعيد قيمة `Tuple` بالشكل (R, G, B) تمثل قيم ألوان sRGB. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**تحويل OKLAB إلى sRGB (Float)**

```sql title=Query theme={null}
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
```

```response title=Response theme={null}
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
```

**تحويل OKLAB إلى sRGB ‏(UInt8)**

```sql title=Query theme={null}
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘
```

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

أُضيف في: v25.7.0

يحوّل لونًا من فضاء الألوان الإدراكي **OKLCH** إلى فضاء الألوان **sRGB** المألوف.

إذا كانت `L` خارج النطاق `[0...1]`، أو كانت `C` سالبة، أو كانت `H` خارج النطاق `[0...360]`، فإن النتيجة تكون مُعرَّفة بحسب التنفيذ.

<Note>
  **OKLCH** هو نسخة أسطوانية من فضاء الألوان OKLab.
  إحداثياته الثلاث هي `L` (السطوع ضمن النطاق `[0...1]`)، و`C` (التشبّع `>= 0`)، و`H` (تدرّج اللون بالدرجات ضمن `[0...360]`).
  صُمّم OKLab/OKLCH ليكون متجانسًا إدراكيًا مع بقائه منخفض الكلفة حسابيًا.
</Note>

التحويل هو معكوس [`colorSRGBToOKLCH`](#colorSRGBToOKLCH):

1. من OKLCH إلى OKLab.
   2\) من OKLab إلى Linear sRGB
   3\) من Linear sRGB إلى sRGB

تُستخدم الوسيطة الثانية gamma في المرحلة الأخيرة.

للاطلاع على أمثلة مرجعية للألوان في فضاء OKLCH، وكيفية توافقها مع ألوان sRGB، يُرجى مراجعة [https://oklch.com/](https://oklch.com/).

**الصياغة**

```sql theme={null}
colorOKLCHToSRGB(tuple [, gamma])
```

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

* `tuple` — قيمة من النوع `Tuple` تتألف من ثلاث قيم رقمية `L` و`C` و`H`، حيث تكون `L` ضمن النطاق `[0...1]`، و`C >= 0`، و`H` ضمن النطاق `[0...360]`. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)
* `gamma` — اختياري. الأسّ المستخدم لتحويل Linear sRGB إلى sRGB مرة أخرى، وذلك بتطبيق `(x ^ (1 / gamma)) * 255` على كل قناة `x`. القيمة الافتراضية هي `2.2`. [`Float64`](/ar/reference/data-types/float)

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

تعيد قيمة من النوع `Tuple` ‏(R, G, B) تمثل قيم ألوان sRGB. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**تحويل OKLCH إلى sRGB**

```sql title=Query theme={null}
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
```

```response title=Response theme={null}
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
```

**تحويل OKLCH إلى sRGB (UInt8)**

```sql title=Query theme={null}
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘
```

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

أُضيف في: v26.2.0

يحوّل لونًا مُرمَّزًا في فضاء الألوان **sRGB** إلى فضاء الألوان **OKLAB** المتجانس إدراكيًا.

إذا كانت أي قناة إدخال خارج `[0...255]` أو كانت قيمة gamma غير موجبة، فإن السلوك يعتمد على التنفيذ.

<Note>
  **OKLAB** هو فضاء ألوان متجانس إدراكيًا.
  إحداثياته الثلاث هي `L` (السطوع ضمن النطاق `[0...1]`) و`a (Green-Red axis)` و`b (Blue-Yellow axis)`.
  صُمّم OKLab ليكون متجانسًا إدراكيًا مع الحفاظ على انخفاض الكلفة الحسابية.
</Note>

يتكوّن التحويل من مرحلتين:

1. sRGB إلى Linear sRGB
   2\) Linear sRGB إلى OKLab

**البنية**

```sql theme={null}
colorSRGBToOKLAB(tuple[, gamma])
```

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

* `tuple` — قيمة Tuple تتكوّن من ثلاث قيم: R وG وB ضمن النطاق `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/ar/reference/data-types/tuple)
* `gamma` — اختياري. الأسّ المستخدَم لجعل sRGB خطيًا عبر تطبيق `(x / 255)^gamma` على كل قناة `x`. القيمة الافتراضية هي `2.2`. [`Float64`](/ar/reference/data-types/float)

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

يعيد قيمة tuple ‏(L وa وb) تمثّل قيم فضاء الألوان OKLAB. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**تحويل sRGB إلى OKLAB**

```sql title=Query theme={null}
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
```

```response title=Response theme={null}
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v25.7.0

يحوّل لونًا مُرمَّزًا في فضاء الألوان **sRGB** إلى فضاء الألوان **OKLCH** المتجانس إدراكيًا.

إذا كانت أي قناة إدخال خارج النطاق `[0...255]` أو كانت قيمة gamma غير موجبة، فإن السلوك يعتمد على التنفيذ.

<Note>
  **OKLCH** هو نسخة أسطوانية من فضاء الألوان OKLab.
  إحداثياته الثلاث هي `L` (السطوع ضمن النطاق `[0...1]`)، و`C` (الكروما `>= 0`) و`H` (تدرّج اللون بالدرجات ضمن `[0...360]`).
  صُمِّم OKLab/OKLCH ليكون متجانسًا إدراكيًا مع بقائه منخفض الكلفة حسابيًا.
</Note>

يتكوّن التحويل من ثلاث مراحل:

1. من sRGB إلى Linear sRGB
   2\) من Linear sRGB إلى OKLab
   3\) من OKLab إلى OKLCH.

للاطلاع على مراجع الألوان في فضاء OKLCH وكيف تقابل ألوانَ sRGB، يُرجى مراجعة [https://OKLCH.com/](https://OKLCH.com/).

**الصياغة**

```sql theme={null}
colorSRGBToOKLCH(tuple[, gamma])
```

**الوسائط**

* `tuple` — قيمة من النوع `Tuple` تتكوّن من ثلاث قيم R وG وB ضمن النطاق `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/ar/reference/data-types/tuple)
* `gamma` — اختياري. الأسّ المُستخدم لتحويل sRGB إلى تمثيل خطي عبر تطبيق `(x / 255)^gamma` على كل قناة `x`. القيمة الافتراضية هي `2.2`. [`Float64`](/ar/reference/data-types/float)

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

تعيد قيمة ثلاثية (L, C, H) تمثّل قيم فضاء الألوان OKLCH. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**تحويل sRGB إلى OKLCH**

```sql title=Query theme={null}
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
```

```response title=Response theme={null}
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘
```

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

أُضيفت في: v21.3.0

تعيد معرّف الاتصال للعميل الذي أرسل الاستعلام الحالي.
تكون هذه الدالة مفيدة بشكل خاص في سيناريوهات تصحيح الأخطاء.
أُنشئت للتوافق مع الدالة `CONNECTION_ID` في MySQL.
ولا تُستخدم عادةً في استعلامات الإنتاج.

**البنية**

```sql theme={null}
connectionId()
```

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

* لا يوجد.

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

يُرجِع معرّف اتصال العميل الحالي. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT connectionId();
```

```response title=Response theme={null}
┌─connectionId()─┐
│              0 │
└────────────────┘
```

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

أُضيفت في: v20.8.0

تعيد عدد الخانات اللازمة لتمثيل قيمة بالصيغة العشرية.

<Note>
  تأخذ هذه الدالة في الحسبان مقياس القيم العشرية، أي إنها تحسب النتيجة استنادًا إلى نوع العدد الصحيح الأساسي، وهو `(value * scale)`.

  على سبيل المثال:

  * `countDigits(42) = 2`
  * `countDigits(42.000) = 5`
  * `countDigits(0.04200) = 4`
</Note>

<Tip>
  يمكنك التحقق من تجاوز السعة في `Decimal64` باستخدام `countDigits(x) > 18`،
  مع أن ذلك أبطأ من [`isDecimalOverflow`](#isDecimalOverflow).
</Tip>

**البنية**

```sql theme={null}
countDigits(x)
```

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

* `x` — قيمة صحيحة أو عشرية. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Decimal`](/ar/reference/data-types/decimal)

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

يُرجع عدد الخانات اللازمة لتمثيل `x`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
       countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
       countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));
```

```response title=Response theme={null}
┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│                             10 │                              10 │                              19 │                               19 │                               39 │                                39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘
```

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

أُضيف في: v1.1.0

يُرجع اسم قاعدة البيانات الحالية.
ويفيد ذلك في معاملات محرك الجدول ضمن استعلامات `CREATE TABLE` عندما تحتاج إلى تحديد قاعدة البيانات.

راجع أيضًا [تعليمة `SET`](/ar/reference/statements/use).

**الصياغة**

```sql theme={null}
currentDatabase()
```

**الأسماء البديلة**: `current_database`, `SCHEMA`, `DATABASE`

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

* لا شيء.

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

يُرجع اسم قاعدة البيانات الحالية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT currentDatabase()
```

```response title=Response theme={null}
┌─currentDatabase()─┐
│ default           │
└───────────────────┘
```

**صياغة SQL القياسية من دون أقواس**

```sql title=Query theme={null}
SELECT CURRENT_DATABASE
```

```response title=Response theme={null}
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘
```

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

قُدِّم في: v21.9.0

يعيد مصفوفة من ملفات تعريف الإعدادات الخاصة بالمستخدم الحالي.

**الصياغة**

```sql theme={null}
currentProfiles()
```

**الوسائط**

* لا توجد.

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

يعيد مصفوفة من ملفات تعريف الإعدادات للمستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT currentProfiles();
```

```response title=Response theme={null}
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘
```

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

قُدِّم في: v25.2.0

يعيد معرّف الاستعلام الحالي.

**البنية**

```sql theme={null}
currentQueryID()
```

**الأسماء المستعارة**: `current_query_id`

**الوسائط**

* لا يوجد.

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

**أمثلة**

**مثال**

```sql title=Query theme={null}
SELECT currentQueryID();
```

```response title=Response theme={null}
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘
```

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

أُضيفت في: v21.9.0

تُرجِع مصفوفة بالأدوار المُعيَّنة للمستخدم الحالي.

**الصياغة**

```sql theme={null}
currentRoles()
```

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

* لا يوجد.

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

تُرجع مصفوفة بالأدوار المُسندة إلى المستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT currentRoles();
```

```response title=Response theme={null}
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

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

أُضيف في: v23.7.0

مماثلة للدالة [`currentDatabase`](#currentDatabase)، ولكنها

* تقبل وسيطة من نوع Boolean يتم تجاهلها
* تُرجع اسم قاعدة البيانات في مصفوفة تحتوي على قيمة واحدة.

الدالة `currentSchemas` موجودة فقط للتوافق مع PostgreSQL.
يُرجى استخدام `currentDatabase` بدلًا منها.

انظر أيضًا إلى [عبارة `SET`](/ar/reference/statements/use).

**الصياغة**

```sql theme={null}
currentSchemas(bool)
```

**الأسماء المستعارة**: `current_schemas`

**الوسائط**

* `bool` — قيمة منطقية يتم تجاهلها. [`Bool`](/ar/reference/data-types/boolean)

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

تُرجِع مصفوفةً ذات عنصر واحد تحتوي على اسم قاعدة البيانات الحالية. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT currentSchemas(true)
```

```response title=Response theme={null}
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘
```

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

أُضيف في: v20.1.0

يعيد اسم المستخدم الحالي.
في حال كان الاستعلام موزعًا، يُعاد اسم المستخدم الذي بدأ الاستعلام.

**البنية**

```sql theme={null}
currentUser()
```

**الأسماء البديلة**: `session_user`, `user`, `current_user`

**الوسائط**

* لا شيء.

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

يعيد اسم المستخدم الحالي، أو اسم تسجيل الدخول للمستخدم الذي بدأ الاستعلام. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT currentUser()
```

```response title=Response theme={null}
┌─currentUser()─┐
│ default       │
└───────────────┘
```

**صيغة SQL القياسية من دون أقواس**

```sql title=Query theme={null}
SELECT CURRENT_USER
```

```response title=Response theme={null}
┌─CURRENT_USER─┐
│ default      │
└──────────────┘
```

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

أُضيف في: v21.9.0

يُرجع مصفوفة بأسماء ملفات تعريف الإعدادات الافتراضية للمستخدم الحالي.

**الصياغة**

```sql theme={null}
defaultProfiles()
```

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

* لا شيء.

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

يعيد مصفوفة من أسماء ملفات تعريف الإعدادات الافتراضية للمستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT defaultProfiles();
```

```response title=Response theme={null}
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘
```

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

أُضيف في: v21.9.0

يُرجع مصفوفة من الأدوار الافتراضية للمستخدم الحالي.

**الصياغة**

```sql theme={null}
defaultRoles()
```

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

* لا توجد.

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

تعيد مصفوفة من الأدوار الافتراضية للمستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT defaultRoles();
```

```response title=Response theme={null}
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

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

تم تقديمه في: v1.1.0

يعيد القيمة الافتراضية لنوع بيانات معيّن.
ولا يشمل القيم الافتراضية للأعمدة المخصّصة التي يعيّنها المستخدم.

**الصيغة**

```sql theme={null}
defaultValueOfArgumentType(expression)
```

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

* `expression` — قيمة من أي نوع، أو تعبير يُنتج قيمة من أي نوع. [`Any`](/ar/reference/data-types/index)

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

تعيد `0` للأرقام، أو سلسلة نصية فارغة للسلاسل النصية، أو `NULL` للأنواع `Nullable`. [`UInt8`](/ar/reference/data-types/int-uint) أو [`String`](/ar/reference/data-types/string) أو [`NULL`](/ar/reference/syntax#null)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘
```

**مثال على Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘
```

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

تم تقديمه في: v1.1.0

تعيد القيمة الافتراضية للنوع ذي الاسم المحدد.

**البنية**

```sql theme={null}
defaultValueOfTypeName(type)
```

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

* `type` — سلسلة نصية تمثل اسم نوع. [`String`](/ar/reference/data-types/string)

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

تُرجع القيمة الافتراضية لاسم النوع المحدد: `0` للأرقام، وسلسلة فارغة للسلاسل النصية، أو `NULL` في حالة Nullable [`UInt8`](/ar/reference/data-types/int-uint) أو [`String`](/ar/reference/data-types/string) أو [`NULL`](/ar/reference/syntax#null)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Int8');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘
```

**مثال على Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Nullable(Int8)');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘
```

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

أُضيف في: v22.11.0

يعيد قيمة `display_name` من [config](/ar/concepts/features/configuration/server-config/configuration-files)، أو الاسم المؤهل بالكامل للنطاق (FQDN) الخاص بالخادم إذا لم يتم تعيينه.

**البنية**

```sql theme={null}
displayName()
```

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

* لا شيء.

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

تُعيد قيمة `display_name` من config، أو FQDN الخاص بالخادم إذا لم تكن مُعيّنة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال استخدام**

```sql title=Query theme={null}
SELECT displayName();
```

```response title=Response theme={null}
┌─displayName()─┐
│ production    │
└───────────────┘
```

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

أُضيف في: v1.1.0

يعرض وصفًا تفصيليًا للبنية الداخلية لعمود ونوع بياناته.

**الصياغة**

```sql theme={null}
dumpColumnStructure(x)
```

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

* `x` — القيمة المطلوب الحصول على وصف لها. [`Any`](/ar/reference/data-types/index)

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

يعيد وصفًا لبنية العمود المستخدمة لتمثيل هذه القيمة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
```

```response title=Response theme={null}
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v21.9.0

يعيد مصفوفة من أسماء ملفات تعريف الإعدادات المُمكّنة للمستخدم الحالي.

**البنية**

```sql theme={null}
enabledProfiles()
```

**الوسائط**

* لا يوجد.

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

تُرجع مصفوفة بأسماء ملفات تعريف الإعدادات المُمكَّنة للمستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT enabledProfiles();
```

```response title=Response theme={null}
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘
```

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

أُضيفت في: v21.9.0

تعيد Array من الأدوار المُمكَّنة للمستخدم الحالي.

**الصياغة**

```sql theme={null}
enabledRoles()
```

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

* لا شيء.

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

تُرجع مصفوفة بأسماء الأدوار المفعّلة للمستخدم الحالي. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT enabledRoles();
```

```response title=Response theme={null}
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘
```

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

أُضيف في: v20.12.0

يُرجع الاسم النصي لرمز خطأ رقمي في ClickHouse.
يتوفر الربط بين رموز الخطأ الرقمية وأسماء الأخطاء [هنا](https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp).

**البنية**

```sql theme={null}
errorCodeToName(error_code)
```

**الوسائط**

* `error_code` — رمز الخطأ في ClickHouse. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

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

يعيد الاسم النصي للرمز `error_code`. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT errorCodeToName(252);
```

```response title=Response theme={null}
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘
```

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

قُدِّم في: v21.3.0

يقرأ ملفًا على هيئة سلسلة نصية ويحمّل البيانات إلى العمود المحدد.
لا يُفسَّر محتوى الملف.

راجع أيضًا دالة الجدول [`file`](/ar/reference/functions/table-functions/file).

**البنية**

```sql theme={null}
file(path[, default])
```

**الوسائط**

* `path` — مسار الملف بالنسبة إلى `user_files_path`. يدعم أحرف البدل `*`, `**`, `?`, `{abc,def}` و `{N..M}`، حيث إن `N` و`M` عددان، و`'abc'` و`'def'` سلسلتان نصيتان. [`String`](/ar/reference/data-types/string)
* `default` — القيمة المُعادة إذا لم يكن الملف موجودًا أو تعذّر الوصول إليه. [`String`](/ar/reference/data-types/string) أو [`NULL`](/ar/reference/syntax#null)

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

يُرجع محتوى الملف على هيئة سلسلة نصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**إدراج ملفات في جدول**

```sql title=Query theme={null}
INSERT INTO table SELECT file('a.txt'), file('b.txt');
```

```response title=Response theme={null}
```

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

أُضيف في: v20.1.0

يعيد مقدار المساحة الحرة في نظام الملفات الذي يستضيف التخزين الدائم لقاعدة البيانات.
تكون القيمة المعادة دائمًا أقل من إجمالي المساحة الحرة ([`filesystemUnreserved`](/ar/reference/functions/regular-functions/other-functions#filesystemUnreserved)) لأن بعض المساحة تكون محجوزة لنظام التشغيل.

**الصياغة**

```sql theme={null}
filesystemAvailable([disk_name])
```

**الوسائط**

* `disk_name` — اختياري. اسم القرص المراد معرفة مقدار المساحة الحرة فيه. إذا لم يُحدَّد، فسيُستخدم القرص default. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

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

تعيد مقدار المساحة المتبقية المتاحة بالبايت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
```

```response title=Response theme={null}
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘
```

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

أُضيفت في: v20.1.0

تعيد سعة نظام الملفات بالبايت.
يتطلب ذلك تهيئة [المسار](/ar/reference/settings/server-settings/settings#path) الخاص بدليل البيانات.

**الصياغة**

```sql theme={null}
filesystemCapacity([disk_name])
```

**الوسائط**

* `disk_name` — اختياري. اسم القرص المطلوب الحصول على سعته. إذا لم يتم تحديده، فسيُستخدم القرص `default`. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

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

تعيد سعة نظام الملفات بالبايت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
```

```response title=Response theme={null}
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘
```

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

قُدِّمت في: v22.12.0

تعيد إجمالي المساحة الحرة على نظام الملفات الذي يستضيف التخزين الدائم لقاعدة البيانات (وكان يُسمى سابقًا `filesystemFree`).
انظر أيضًا [`filesystemAvailable`](#filesystemAvailable).

**الصياغة**

```sql theme={null}
filesystemUnreserved([disk_name])
```

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

* `disk_name` — اختياري. اسم القرص المطلوب معرفة إجمالي المساحة الحرة فيه. إذا لم يتم تحديده، فسيُستخدم القرص الافتراضي. [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring)

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

يعيد مقدار المساحة الحرة بالبايت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
```

```response title=Response theme={null}
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘
```

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

قُدِّمت في: v1.1.0

عند تمرير حالة تجميع، تُرجِع هذه الدالة نتيجة التجميع (أو الحالة المُنهية عند استخدام المُركِّب [-State](/ar/reference/functions/aggregate-functions/combinators#-state)).

**الصياغة**

```sql theme={null}
finalizeAggregation(state)
```

**الوسائط**

* `state` — حالة التجميع. [`AggregateFunction`](/ar/reference/data-types/aggregatefunction)

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

يعيد النتيجة النهائية للتجميع. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
```

```response title=Response theme={null}
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘
```

**بالاقتران مع initializeAggregation**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

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

أُضيفت في: v25.11.0

تبدّل هذه الدالة الإحداثيين x وy في الكائنات الهندسية. تؤدي هذه العملية إلى تبديل خط العرض وخط الطول، وهو ما يفيد عند التحويل بين أنظمة إحداثيات مختلفة أو تصحيح ترتيب الإحداثيات.

بالنسبة إلى Point، فهي تبدّل الإحداثيين x وy. وبالنسبة إلى الأشكال الهندسية الأكثر تعقيدًا (LineString وPolygon وMultiPolygon وRing وMultiLineString)، فإنها تطبّق هذا التحويل تكراريًا على كل زوج من الإحداثيات.

تدعم الدالة كلاً من الأنواع الهندسية الفردية (Point وRing وPolygon وMultiPolygon وLineString وMultiLineString) ونوع Geometry المتغاير.

**الصياغة**

```sql theme={null}
flipCoordinates(geometry)
```

**الوسائط**

* `geometry` — العنصر الهندسي المراد تحويله. الأنواع المدعومة: Point (Tuple(Float64, Float64))، وRing (Array(Point))، وPolygon (Array(Ring))، وMultiPolygon (Array(Polygon))، وLineString (Array(Point))، وMultiLineString (Array(LineString))، أو Geometry (نوع Variant يحتوي على أي من هذه الأنواع).

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

العنصر الهندسي بإحداثيات معكوسة. نوع الإرجاع يطابق نوع الإدخال. [`Point`](/ar/reference/data-types/geo#point) أو [`Ring`](/ar/reference/data-types/geo#ring) أو [`Polygon`](/ar/reference/data-types/geo#polygon) أو [`MultiPolygon`](/ar/reference/data-types/geo#multipolygon) أو [`LineString`](/ar/reference/data-types/geo#linestring) أو [`MultiLineString`](/ar/reference/data-types/geo#multilinestring) أو [`Geometry`](/ar/reference/data-types/geo)

**أمثلة**

**basic\_point**

```sql title=Query theme={null}
SELECT flipCoordinates((1.0, 2.0));
```

```response title=Response theme={null}
(2.0, 1.0)
```

**حلقة**

```sql title=Query theme={null}
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
```

```response title=Response theme={null}
[(2.0, 1.0), (4.0, 3.0)]
```

**polygon**

```sql title=Query theme={null}
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
```

```response title=Response theme={null}
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
```

**geometry\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POINT(10 20)'));
```

```response title=Response theme={null}
(20, 10)
```

**geometry\_polygon\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
```

```response title=Response theme={null}
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]
```

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

استُحدثت في: v23.10.0

تعيد نسخة منسّقة من استعلام SQL المُعطى، وقد تكون متعددة الأسطر. وتُطلق استثناءً عند حدوث خطأ في التحليل.
\[example:multiline]

**الصيغة**

```sql theme={null}
formatQuery(query)
```

**الوسائط**

* `query` — استعلام SQL المراد تنسيقه. [String](/ar/reference/data-types/string)

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

الاستعلام المنسّق [`String`](/ar/reference/data-types/string)

**أمثلة**

**متعدد الأسطر**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

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

أُضيفت في: v23.11.0

تعيد إصدارًا منسقًا، وقد يمتد على عدة أسطر، من استعلام SQL المحدد. وتعيد NULL عند حدوث خطأ في التحليل.
\[example:multiline]

**البنية**

```sql theme={null}
formatQueryOrNull(query)
```

**الوسائط**

* `query` — استعلام SQL المراد تنسيقه. [String](/ar/reference/data-types/string)

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

الاستعلام المنسَّق من النوع [`String`](/ar/reference/data-types/string)

**أمثلة**

**متعدد الأسطر**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

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

أُضيف في: v23.10.0

مشابه لـ formatQuery()، لكن السلسلة المنسّقة المُعادة لا تحتوي على فواصل أسطر. ويُظهر خطأً عند حدوث خطأ في التحليل.
\[example:multiline]

**الصياغة**

```sql theme={null}
formatQuerySingleLine(query)
```

**الوسائط**

* `query` — استعلام SQL المطلوب تنسيقه. [String](/ar/reference/data-types/string)

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

الاستعلام المنسّق [`String`](/ar/reference/data-types/string)

**أمثلة**

**متعدد الأسطر**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

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

أُضيف في: v23.11.0

مثل formatQuery()، ولكن السلسلة المنسّقة المُعادة لا تحتوي على فواصل أسطر. ويُرجع NULL في حالة حدوث خطأ في التحليل.
\[example:multiline]

**الصيغة**

```sql theme={null}
formatQuerySingleLineOrNull(query)
```

**الوسائط**

* `query` — استعلام SQL المطلوب تنسيقه. [`String`](/ar/reference/data-types/string)

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

الاستعلام المنسَّق [`String`](/ar/reference/data-types/string)

**أمثلة**

**متعدد الأسطر**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

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

أُضيفت في: v22.11.0

عند إعطائها حجمًا معيّنًا (عددًا من البايتات)، تُرجِع هذه الدالة حجمًا مقروءًا ومقرّبًا مع لاحقة (KB وMB وما إلى ذلك) على هيئة سلسلة نصية.

العمليات العكسية لهذه الدالة هي [`parseReadableSize`](#parseReadableSize).

**الصياغة**

```sql theme={null}
formatReadableDecimalSize(value[, precision])
```

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

* `value` — الحجم بالبايت. [`Int8`](/ar/reference/data-types/int-uint) أو [`Int16`](/ar/reference/data-types/int-uint) أو [`Int32`](/ar/reference/data-types/int-uint) أو [`Int64`](/ar/reference/data-types/int-uint) أو [`UInt8`](/ar/reference/data-types/int-uint) أو [`UInt16`](/ar/reference/data-types/int-uint) أو [`UInt32`](/ar/reference/data-types/int-uint) أو [`UInt64`](/ar/reference/data-types/int-uint) أو [`Float32`](/ar/reference/data-types/float) أو [`Float64`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `precision` — اختياري. عدد الخانات بعد الفاصلة العشرية. القيمة الافتراضية هي 2. [`const UInt8`](/ar/reference/data-types/int-uint)

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

تعيد حجمًا مقروءًا ومقربًا مع لاحقة، كسلسلة نصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تنسيق أحجام الملفات**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘
```

**مع تحديد الدقة بشكل صريح**

```sql title=Query theme={null}
SELECT
    formatReadableDecimalSize(192851925, 0) AS no_decimals,
    formatReadableDecimalSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals─┐
│ 193 MB      │ 192.8519 MB   │
└─────────────┴───────────────┘
```

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

أُضيفت في: v20.10.0

عند إعطائها رقمًا، تُرجِع هذه الدالة رقمًا مُقرَّبًا مع لاحقة (ألف، مليون، مليار، إلخ) في صورة سلسلة نصية.

تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى `Float64`.
قد لا تكون النتائج مثالية مع القيم الكبيرة.

**البنية**

```sql theme={null}
formatReadableQuantity(value[, precision])
```

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

* `value` — رقم مطلوب تنسيقه. [`Int8`](/ar/reference/data-types/int-uint) أو [`Int16`](/ar/reference/data-types/int-uint) أو [`Int32`](/ar/reference/data-types/int-uint) أو [`Int64`](/ar/reference/data-types/int-uint) أو [`UInt8`](/ar/reference/data-types/int-uint) أو [`UInt16`](/ar/reference/data-types/int-uint) أو [`UInt32`](/ar/reference/data-types/int-uint) أو [`UInt64`](/ar/reference/data-types/int-uint) أو [`Float32`](/ar/reference/data-types/float) أو [`Float64`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `precision` — اختياري. عدد الخانات بعد الفاصلة العشرية. القيمة الافتراضية هي 2. [`const UInt8`](/ar/reference/data-types/int-uint)

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

تُرجع رقمًا مُقرَّبًا مع لاحقة، على هيئة سلسلة نصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تنسيق الأرقام باستخدام لواحق**

```sql title=Query theme={null}
SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
```

```response title=Response theme={null}
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘
```

**مع دقة محددة بوضوح**

```sql title=Query theme={null}
SELECT
    formatReadableQuantity(98765432101234, 0) AS no_decimals,
    formatReadableQuantity(98765432101234, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals──┬─four_decimals─────┐
│ 99 trillion  │ 98.7654 trillion  │
└──────────────┴───────────────────┘
```

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

أُضيفت في: v1.1.0

عند إعطائها حجمًا (عددًا من البايتات)، تُرجع هذه الدالة حجمًا مقروءًا ومقربًا مع لاحقة (KiB، MiB، إلخ) على هيئة سلسلة نصية.

العمليات العكسية لهذه الدالة هي [`parseReadableSize`](#parseReadableSize)، و[`parseReadableSizeOrZero`](#parseReadableSizeOrZero)، و[`parseReadableSizeOrNull`](#parseReadableSizeOrNull).
تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى `Float64`. قد لا تكون النتائج مثالية مع القيم الكبيرة.

**الصيغة**

```sql theme={null}
formatReadableSize(value[, precision])
```

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

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

* `value` — الحجم بالبايت. [`Int8`](/ar/reference/data-types/int-uint) أو [`Int16`](/ar/reference/data-types/int-uint) أو [`Int32`](/ar/reference/data-types/int-uint) أو [`Int64`](/ar/reference/data-types/int-uint) أو [`UInt8`](/ar/reference/data-types/int-uint) أو [`UInt16`](/ar/reference/data-types/int-uint) أو [`UInt32`](/ar/reference/data-types/int-uint) أو [`UInt64`](/ar/reference/data-types/int-uint) أو [`Float32`](/ar/reference/data-types/float) أو [`Float64`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)
* `precision` — اختياري. عدد الخانات بعد الفاصلة العشرية. القيمة الافتراضية هي 2. [`const UInt8`](/ar/reference/data-types/int-uint)

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

يعيد حجمًا مقروءًا ومقرّبًا مع لاحقة، على هيئة سلسلة نصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تنسيق أحجام الملفات**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘
```

**مع تحديد الدقة صراحةً**

```sql title=Query theme={null}
SELECT
    formatReadableSize(192851925, 0) AS no_decimals,
    formatReadableSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals──┐
│ 184 MiB     │ 183.9179 MiB   │
└─────────────┴────────────────┘
```

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

أُضيفت في: v20.12.0

إذا أُعطيت هذه الدالة فترةً زمنية (delta) بالثواني أو تعبيرًا من نوع `INTERVAL`، فإنها تُرجع فرقًا زمنيًا كسلسلة نصية بصيغة year/month/day/hour/minute/second/millisecond/microsecond/nanosecond.

تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى `Float64`. وقد لا تكون النتائج مثالية مع القيم الكبيرة.

عند تمرير تعبير من نوع `INTERVAL`، تُحوَّل قيمته إلى ثوانٍ. ولا تكون وحدات interval من `MONTH` فما فوق (`MONTH`, `QUARTER`, `YEAR`) مدعومة، لأنها لا تمثل فترةً ثابتة المقدار بالثواني.

**الصياغة**

```sql theme={null}
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
```

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

* `column` — عمود يحتوي على فرق زمني رقمي، أو تعبير `INTERVAL`. وحدات `INTERVAL` من `MONTH` فما فوق غير مدعومة. [`Float64`](/ar/reference/data-types/float) أو [`Interval`](/ar/reference/data-types/int-uint)
* `maximum_unit` — اختياري. أكبر وحدة تُعرض. القيم المقبولة: `nanoseconds`، `microseconds`، `milliseconds`، `seconds`، `minutes`، `hours`، `days`، `months`، `years`. القيمة الافتراضية: `years`. [`const String`](/ar/reference/data-types/string)
* `minimum_unit` — اختياري. أصغر وحدة تُعرض. تُحذف جميع الوحدات الأصغر. القيم المقبولة: `nanoseconds`، `microseconds`، `milliseconds`، `seconds`، `minutes`، `hours`، `days`، `months`، `years`. إذا كانت القيمة المحددة صراحةً أكبر من `maximum_unit`، فسيُطلق استثناء. القيمة الافتراضية: `seconds` إذا كان `maximum_unit` يساوي `seconds` أو أكبر، وإلا `nanoseconds`. [`const String`](/ar/reference/data-types/string)

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

تعيد فرقًا زمنيًا على هيئة سلسلة نصية. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                        │
│      12345 │ 3 hours, 25 minutes and 45 seconds                             │
│  432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│
└────────────┴────────────────────────────────────────────────────────────────┘
```

**مع أكبر وحدة**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘
```

**باستخدام تعبير INTERVAL**

```sql title=Query theme={null}
SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta
```

```response title=Response theme={null}
┌─time_delta─────────────────────────┐
│ 3 hours, 25 minutes and 45 seconds │
└────────────────────────────────────┘
```

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

أُضيفت في: v26.2.0

تُحلِّل سلسلة الاستعلام المعطاة وتُطبِّق عليها طفرات عشوائية على AST (التشويش). وتُرجِع الاستعلام الناتج عن التشويش كسلسلة نصية. غير حتمي: قد يُنتِج كل استدعاء نتيجة مختلفة. وتتطلب `allow_fuzz_query_functions = 1`.

**الصيغة**

```sql theme={null}
fuzzQuery(query)
```

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

* `query` — استعلام SQL المراد إخضاعه للاختبار العشوائي. [String](/ar/reference/data-types/string)

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

سلسلة الاستعلام بعد إخضاعها للاختبار العشوائي [`String`](/ar/reference/data-types/string)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');
```

```response title=Response theme={null}
```

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

أُضيف في: v23.5.0

يولّد بنية جدول عشوائية بالتنسيق `column1_name column1_type, column2_name column2_type, ...`.

**الصياغة**

```sql theme={null}
generateRandomStructure([number_of_columns, seed])
```

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

* `number_of_columns` — العدد المطلوب من الأعمدة في بنية الجدول الناتجة. إذا ضُبطت القيمة على 0 أو `Null`، فسيكون عدد الأعمدة عشوائيًا بين 1 و128. القيمة الافتراضية: `Null`. [`UInt64`](/ar/reference/data-types/int-uint)
* `seed` — بذرة عشوائية لإنتاج نتائج ثابتة. إذا لم يتم تحديد seed أو ضُبطت قيمته على `Null`، فسيتم توليدها عشوائيًا. [`UInt64`](/ar/reference/data-types/int-uint)

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

بنية جدول مُولَّدة عشوائيًا. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT generateRandomStructure()
```

```response title=Response theme={null}
c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTime
```

**بعدد أعمدة محدد**

```sql title=Query theme={null}
SELECT generateRandomStructure(1)
```

```response title=Response theme={null}
c1 Map(UInt256, UInt16)
```

**باستخدام قيمة ابتدائية محددة**

```sql title=Query theme={null}
SELECT generateRandomStructure(NULL, 33)
```

```response title=Response theme={null}
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))
```

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

أُضيفت في: v25.1.0

تُولِّد هذه الدالة أرقامًا تسلسلية وتُعيدها بدءًا من قيمة العداد السابقة.
تأخذ هذه الدالة وسيطًا نصيًا — معرّف السلسلة — وقيمة بدء اختيارية.
يجب تهيئة الخادم لاستخدام Keeper.
تُخزَّن السلاسل في عُقد Keeper تحت المسار، الذي يمكن تهيئته في [`series_keeper_path`](/ar/reference/settings/server-settings/settings#series_keeper_path) ضمن تهيئة الخادم.

**الصياغة**

```sql theme={null}
generateSerialID(series_identifier[, start_value])
```

**الوسائط**

* `series_identifier` — معرّف السلسلة [`const String`](/ar/reference/data-types/string)
* `start_value` — اختياري. قيمة بداية العداد. القيمة الافتراضية هي 0. ملاحظة: لا تُستخدم هذه القيمة إلا عند إنشاء سلسلة جديدة، ويجري تجاهلها إذا كانت السلسلة موجودة بالفعل [`UInt*`](/ar/reference/data-types/int-uint)

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

يعيد أرقامًا متسلسلة تبدأ من قيمة العداد السابقة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**الاستدعاء الأول**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘
```

**الاستدعاء الثاني**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘
```

**استدعاء العمود**

```sql title=Query theme={null}
SELECT *, generateSerialID('id1') FROM test_table
```

```response title=Response theme={null}
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│         1 │      3 │   3 │                        3 │
│         1 │      1 │   1 │                        4 │
│         1 │      2 │   2 │                        5 │
│         1 │      5 │   5 │                        6 │
│         1 │      4 │   4 │                        7 │
└───────────┴────────┴─────┴──────────────────────────┘
```

**مع قيمة ابتدائية**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘
```

**مع قيمة البداية في الاستدعاء الثاني**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘
```

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

أُضيف في: v24.5.0

تعيد قيمة ترويسة HTTP.
إذا لم تكن هناك ترويسة بهذا الاسم، أو إذا لم يُنفَّذ الطلب الحالي عبر واجهة HTTP، فستُرجع الدالة سلسلة فارغة.
بعض ترويسات HTTP (مثل `Authentication` و `X-ClickHouse-*`) مقيّدة.

<Info>
  **يتطلب تمكين الإعداد `allow_get_client_http_header`**

  تتطلب الدالة أن يكون الإعداد `allow_get_client_http_header` مُمكّنًا.
  لا يكون هذا الإعداد مُمكّنًا افتراضيًا لأسباب أمنية، لأن بعض الترويسات، مثل `Cookie`، قد تحتوي على معلومات حساسة.
</Info>

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

**البنية**

```sql theme={null}
getClientHTTPHeader(name)
```

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

* `name` — اسم ترويسة HTTP. [`String`](/ar/reference/data-types/string)

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

تُرجِع قيمة الترويسة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT getClientHTTPHeader('Content-Type');
```

```response title=Response theme={null}
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘
```

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

أُضيف في: v20.1.0

يعيد قيمة ماكرو من ملف تهيئة الخادم.
تُعرَّف وحدات الماكرو في قسم [`<macros>`](/ar/reference/settings/server-settings/settings#macros) من ملف التهيئة، ويمكن استخدامها لتمييز الخوادم بأسماء مناسبة حتى لو كانت أسماء المضيفين الخاصة بها معقدة.
إذا نُفِّذت الدالة في سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم مرتبطة بكل shard.

**البنية**

```sql theme={null}
getMacro(name)
```

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

* `name` — اسم الماكرو المطلوب استرجاعه. [`const String`](/ar/reference/data-types/string)

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

تُرجِع قيمة الماكرو المحدد. [`String`](/ar/reference/data-types/string)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT getMacro('test');
```

```response title=Response theme={null}
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘
```

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

أُضيف في: v25.1.0

يعيد الحد الأقصى لطول اسم الجدول في قاعدة بيانات محددة.

**البنية**

```sql theme={null}
getMaxTableNameLengthForDatabase(database_name)
```

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

* `database_name` — اسم قاعدة البيانات المحددة. [`String`](/ar/reference/data-types/string)

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

تعيد الحد الأقصى لطول اسم الجدول، وهو عدد صحيح

**أمثلة**

**اعتيادي**

```sql title=Query theme={null}
SELECT getMaxTableNameLengthForDatabase('default');
```

```response title=Response theme={null}
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘
```

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

أُضيفت في: v25.6.0

تُرجع القيمة الحالية لأحد إعدادات MergeTree.

**الصيغة**

```sql theme={null}
getMergeTreeSetting(setting_name)
```

**الوسائط**

* `setting_name` — اسم الإعداد. [`String`](/ar/reference/data-types/string)

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

تُرجع القيمة الحالية لإعداد MergeTree.

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getMergeTreeSetting('index_granularity');
```

```response title=Response theme={null}
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘
```

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

أُضيفت في: v21.11.0

تُرجع سلسلة نصية تحتوي على إصدار نواة نظام التشغيل.

**الصياغة**

```sql theme={null}
getOSKernelVersion()
```

**الوسائط**

* لا شيء.

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

تعيد إصدار نواة نظام التشغيل الحالي. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getOSKernelVersion();
```

```response title=Response theme={null}
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘
```

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

أُضيف في: v21.10.0

يعيد رقم منفذ الخادم للبروتوكول المحدد.

**الصيغة**

```sql theme={null}
getServerPort(port_name)
```

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

* `port_name` — اسم المنفذ. [`String`](/ar/reference/data-types/string)

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

تعيد رقم منفذ الخادم. [`UInt16`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT getServerPort('tcp_port');
```

```response title=Response theme={null}
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘
```

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

أُضيف في: v25.6.0

يعيد القيمة المعينة حاليًا عند تزويده باسم إعداد الخادم.

**البنية**

```sql theme={null}
getServerSetting(setting_name')
```

**الوسائط**

* `setting_name` — اسم إعداد الخادم. [`String`](/ar/reference/data-types/string)

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

تُرجع القيمة الحالية لإعداد الخادم. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getServerSetting('allow_use_jemalloc_memory');
```

```response title=Response theme={null}
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘
```

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

أُضيف في: v20.7.0

يُرجع القيمة الحالية للإعداد.

**البنية**

```sql theme={null}
getSetting(setting_name)
```

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

* `setting_Name` — اسم الإعداد. [`const String`](/ar/reference/data-types/string)

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

تُرجع القيمة الحالية للإعداد. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
```

```response title=Response theme={null}
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘
```

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

قُدِّمت في: v24.10.0

تعيد القيمة الحالية لإعداد ما، أو تعيد القيمة الافتراضية المحددة في الوسيطة الثانية إذا لم يكن الإعداد معيّنًا في الملف الشخصي الحالي.

**البنية**

```sql theme={null}
getSettingOrDefault(setting_name, default_value)
```

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

* `setting_name` — اسم الإعداد. [`String`](/ar/reference/data-types/string)
* `default_value` — القيمة التي ستُعاد إذا لم يتم تعيين custom\_setting. ويمكن أن تكون هذه القيمة من أي نوع بيانات أو Null.

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

تُعيد القيمة الحالية للإعداد المحدد، أو `default_value` إذا لم يتم تعيين الإعداد.

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
```

```response title=Response theme={null}
my_value
100
NULL
```

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

أُضيف في: v1.1.0

يعيد عدد الحقول في [`Enum`](/ar/reference/data-types/enum) المعطى.

**البنية**

```sql theme={null}
getSizeOfEnumType(x)
```

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

* `x` — قيمة من النوع `Enum`. [`Enum`](/ar/reference/data-types/enum)

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

يُرجع عدد الحقول ذات قيم الإدخال من النوع `Enum`. [`UInt8/16`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

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

أُضيف في: v23.3.0

يستقبل تعبيرًا أو معرّفًا، بالإضافة إلى سلسلة نصية ثابتة تمثل اسم العمود الفرعي.

يعيد العمود الفرعي المطلوب المستخرج من التعبير.

**البنية**

```sql theme={null}
getSubcolumn(nested_value, subcolumn_name)
```

**الوسائط**

* لا شيء.

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

**أمثلة**

**getSubcolumn**

```sql title=Query theme={null}
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
```

```response title=Response theme={null}
```

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

أُضيف في: v22.6.0

يسرد مسارات التدفق الخاصة بنوع البيانات.
هذه الدالة مخصّصة لأغراض التطوير.

**الصيغة**

```sql theme={null}
getTypeSerializationStreams(col)
```

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

* `col` — عمود أو تمثيل نصي لنوع بيانات يُكتشف منه نوع البيانات. [`Any`](/ar/reference/data-types/index)

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

يعيد مصفوفة تحتوي على جميع مسارات التدفقات الفرعية الخاصة بالتسلسل. [`Array(String)`](/ar/reference/data-types/array)

**أمثلة**

**tuple**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
```

```response title=Response theme={null}
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
```

**map**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams('Map(String, Int64)')
```

```response title=Response theme={null}
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']
```

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

قُدِّمت في: v20.5.0

تأخذ وسيطة String ثابتة وتُرجع قيمة المتغير العام الذي يحمل هذا الاسم. هذه الدالة مخصّصة للتوافق مع MySQL، وليست مطلوبة أو مفيدة للتشغيل العادي لـ ClickHouse. لا يوجد سوى عدد قليل من المتغيرات العامة الوهمية المعرَّفة.

**البنية**

```sql theme={null}
globalVariable(name)
```

**الوسائط**

* `name` — اسم المتغير العام. [`String`](/ar/reference/data-types/string)

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

تعيد قيمة المتغير `name`. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**globalVariable**

```sql title=Query theme={null}
SELECT globalVariable('max_allowed_packet')
```

```response title=Response theme={null}
67108864
```

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

أُضيفت في: v1.1.0

يتحقق مما إذا كان عمود محدد موجودًا في جدول بقاعدة بيانات.
وبالنسبة إلى العناصر ضمن بنية بيانات متداخلة، تتحقق الدالة من وجود عمود.
أما بنية البيانات المتداخلة نفسها، فتعيد الدالة القيمة `0`.

**بناء الجملة**

```sql theme={null}
hasColumnInTable([hostname[, username[, password]],]database, table, column)
```

**الوسائط**

* `database` — اسم قاعدة البيانات. [`const String`](/ar/reference/data-types/string)
* `table` — اسم الجدول. [`const String`](/ar/reference/data-types/string)
* `column` — اسم العمود. [`const String`](/ar/reference/data-types/string)
* `hostname` — اختياري. اسم الخادم البعيد الذي سيتم إجراء التحقق عليه. [`const String`](/ar/reference/data-types/string)
* `username` — اختياري. اسم المستخدم للخادم البعيد. [`const String`](/ar/reference/data-types/string)
* `password` — اختياري. كلمة المرور للخادم البعيد. [`const String`](/ar/reference/data-types/string)

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

يعيد `1` إذا كان العمود المحدد موجودًا، وإلا فيعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**التحقق من وجود عمود**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','metric')
```

```response title=Response theme={null}
1
```

**التحقق من عمود غير موجود**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','non-existing_column')
```

```response title=Response theme={null}
0
```

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

أُضيف في: v20.6.0

يعيد ما إذا كان thread fuzzer مفعّلًا.
هذه الدالة مفيدة فقط للاختبار وتصحيح الأخطاء.

**الصيغة**

```sql theme={null}
hasThreadFuzzer()
```

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

* لا يوجد.

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

يعيد ما إذا كان Thread Fuzzer مفعّلًا. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**التحقق من حالة Thread Fuzzer**

```sql title=Query theme={null}
SELECT hasThreadFuzzer()
```

```response title=Response theme={null}
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘
```

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

أُضيف في: v26.5.0

يحلّل سلسلة query في ClickHouse SQL ويُرجع Array من النطاقات المميّزة لاستخدامها في تمييز الصياغة.
كل نطاق عبارة عن named tuple يتضمن موضع البداية (بالبايتات)، وموضع النهاية، ونوع التمييز.
وتصف أنواع التمييز الدور النحوي للمقطع (keyword، أو identifier، أو function، وما إلى ذلك)
ويمكن استخدامها لتعيين الألوان في واجهة المستخدم. داخل أنماط السلاسل النصية لـ LIKE وREGEXP، تُميَّز المحارف الفوقية
وأحرف الإفلات كلٌّ على حدة.

**الصياغة**

```sql theme={null}
highlightQuery(query)
```

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

* `query` — سلسلة استعلام في ClickHouse SQL. String.

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

مصفوفة من Tuples مُسمّاة `(begin UInt64, end UInt64, type Enum8(...))` تمثّل النطاقات المميّزة. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ar/reference/data-types/array)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT highlightQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'keyword'),(7,8,'number')]
```

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

أُضيفت في: v20.5.0

تعيد اسم المضيف الذي نُفِّذت عليه هذه الدالة.
إذا نُفِّذت الدالة على خادم بعيد (المعالجة الموزعة)، فسيُعاد اسم الخادم البعيد.
إذا نُفِّذت الدالة ضمن سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم تخص كل جزء.
وفي غير ذلك، فإنها تُنتج قيمة ثابتة.

**الصيغة**

```sql theme={null}
hostName()
```

**الأسماء المستعارة**: `hostname`

**الوسائط**

* لا شيء.

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

يعيد اسم المضيف. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT hostName()
```

```response title=Response theme={null}
┌─hostName()─┐
│ clickhouse │
└────────────┘
```

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

أُضيف في: v25.5.0

يُنفِّذ المنطق الخاص بـ [تحويل bucket في Iceberg](https://iceberg.apache.org/spec/#bucket-transform-details.)

**البنية**

```sql theme={null}
icebergBucket(N, value)
```

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

* `N` — عدد الـ buckets، modulo. [`const (U)Int*`](/ar/reference/data-types/int-uint)
* `value` — القيمة المراد تحويلها. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Bool`](/ar/reference/data-types/boolean) أو [`Decimal`](/ar/reference/data-types/decimal) أو [`Float*`](/ar/reference/data-types/float) أو [`String`](/ar/reference/data-types/string) أو [`FixedString`](/ar/reference/data-types/fixedstring) أو [`UUID`](/ar/reference/data-types/uuid) أو [`Date`](/ar/reference/data-types/date) أو [`Time`](/ar/reference/data-types/time) أو [`DateTime`](/ar/reference/data-types/datetime)

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

يعيد قيمة تجزئة بطول 32 بت للقيمة المصدرية. [`Int32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال**

```sql title=Query theme={null}
SELECT icebergBucket(5, 1.0 :: Float32)
```

```response title=Response theme={null}
4
```

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

أُضيف في: v25.3.0

يطبّق منطق تحويل truncate في Iceberg: [https://iceberg.apache.org/spec/#truncate-transform-details](https://iceberg.apache.org/spec/#truncate-transform-details).

**البنية**

```sql theme={null}
icebergTruncate(N, value)
```

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

* `value` — القيمة المطلوب تحويلها. [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Decimal`](/ar/reference/data-types/decimal)

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

نفس نوع الوسيط

**أمثلة**

**مثال**

```sql title=Query theme={null}
SELECT icebergTruncate(3, 'iceberg')
```

```response title=Response theme={null}
ice
```

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

أُضيفت في: v1.1.0

تعيد هذه الدالة الوسيطة التي تمرّرها إليها، وهو ما يفيد في تصحيح الأخطاء والاختبار. كما تتيح لك تجاوز استخدام الفهرس لمعاينة أداء المسح الكامل بدلًا من ذلك. ويتجاهل محلل الاستعلام أي شيء داخل دوال identity عند البحث عن الفهارس التي سيستخدمها، كما يعطّل أيضًا طيّ الثوابت.

**الصياغة**

```sql theme={null}
identity(x)
```

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

* `x` — قيمة الإدخال. [`Any`](/ar/reference/data-types/index)

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

تعيد قيمة الإدخال دون تغيير. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT identity(42)
```

```response title=Response theme={null}
42
```

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

استُحدث في: v1.1.0

يقبل أي وسيطات ويُرجع `0` دائمًا.

**الصياغة**

```sql theme={null}
ignore(x)
```

**الوسائط**

* `x` — قيمة إدخال غير مستخدمة، وتُمرَّر فقط لتجنّب حدوث خطأ نحوي. [`Any`](/ar/reference/data-types/index)

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

تُعيد دائمًا `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT ignore(0, 'ClickHouse', NULL)
```

```response title=Response theme={null}
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘
```

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

أُضيف في: v1.1.0

هذه الدالة مخصّصة لأغراض تصحيح الأخطاء والفحص الداخلي.
فهي تتجاهل وسيطها وتُرجع دائمًا 1.
كما أن الوسائط لا تُقيَّم.

أثناء تحليل الفهرس، يُفترَض أن وسيط هذه الدالة ليس مغلّفًا داخل `indexHint`.
ويتيح لك ذلك تحديد البيانات ضمن نطاقات الفهرس وفقًا للشرط المقابل، ولكن من دون إجراء تصفية إضافية بناءً على هذا الشرط.
وبما أن الفهرس في ClickHouse متناثر، فإن استخدام `indexHint` سيؤدي إلى إرجاع بيانات أكثر من تحديد الشرط نفسه مباشرةً.

<Accordion title="الشرح">
  عندما تُشغِّل:

  ```sql theme={null}
  SELECT * FROM test WHERE key = 123;
  ```

  فإن ClickHouse يقوم بأمرين:

  1. يستخدم الفهرس لتحديد الحبيبات (كتل تضم نحو 8192 صفًا) التي قد تحتوي على `key = 123`
  2. يقرأ تلك الحبيبات ويصفّيها صفًا بصف لإرجاع الصفوف التي يكون فيها `key = 123` فقط

  لذا، حتى إذا قرأ 8,192 صفًا من القرص، فإنه لا يُرجع إلا الصف الوحيد المطابق فعليًا.

  أما مع `indexHint`، فعندما تُشغِّل:

  ```sql theme={null}
  SELECT * FROM test WHERE indexHint(key = 123);
  ```

  فإن ClickHouse يقوم بأمر واحد فقط:

  1. يستخدم الفهرس لتحديد الحبيبات التي قد تحتوي على `key = 123` ويُرجع جميع الصفوف من تلك الحبيبات **من دون** تصفية.

  فهو يُرجع الصفوف الـ 8,192 كلها، بما في ذلك الصفوف التي فيها `key = 456` و`key = 789` وما إلى ذلك. (أي كل ما صادف تخزينه في الحبيبة نفسها.)
  إن `indexHint()` ليس مخصّصًا للأداء، بل لتصحيح الأخطاء وفهم كيفية عمل فهرس ClickHouse:

  * ما الحبيبات التي يحدّدها الشرط الخاص بي؟
  * كم عدد الصفوف الموجودة في تلك الحبيبات؟
  * هل يُستخدم الفهرس لديّ بفاعلية؟
</Accordion>

ملاحظة: لا يمكن تحسين أي استعلام باستخدام الدالة `indexHint`. فالدالة `indexHint` لا تحسّن الاستعلام، لأنها لا توفّر أي معلومات إضافية لتحليل الاستعلام. كما أن وضع تعبير داخل الدالة `indexHint` ليس أفضل بأي شكل من عدم استخدام الدالة `indexHint`. ولا يمكن استخدام الدالة `indexHint` إلا لأغراض الفحص الداخلي وتصحيح الأخطاء، وهي لا تحسّن الأداء. وإذا رأيت استخدام `indexHint` من أي جهة غير المساهمين في ClickHouse، فغالبًا ما يكون ذلك خطأً ويجب عليك إزالته.

**الصياغة**

```sql theme={null}
indexHint(expression)
```

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

* `expression` — أي تعبير لاختيار نطاق الفهرس. [`Expression`](/ar/reference/data-types/special-data-types/expression)

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

تعيد `1` في جميع الحالات. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال استخدام مع التصفية حسب التاريخ**

```sql title=Query theme={null}
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
```

```response title=Response theme={null}
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘
```

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

أُضيف في: v1.1.0

يُرجع معرّف الاستعلام الحالي الأصلي.
يمكن استخراج المعلمات الأخرى الخاصة بالاستعلام من الحقل `initial_query_id` في [`system.query_log`](/ar/reference/system-tables/query_log).

بخلاف الدالة [`queryID`](/ar/reference/functions/regular-functions/other-functions#queryID)، تُرجع `initialQueryID` النتائج نفسها على الشظايا المختلفة.

**البنية**

```sql theme={null}
initialQueryID()
```

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

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

* لا شيء.

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

تعيد معرّف الاستعلام الحالي الأوّلي. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

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

قُدِّم في: v25.4.0

يعيد وقت بدء الاستعلام الحالي الأصلي.
يعيد `initialQueryStartTime` النتائج نفسها على مختلف الشظايا.

**الصياغة**

```sql theme={null}
initialQueryStartTime()
```

**الأسماء المستعارة**: `initial_query_start_time`

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

* لا يوجد.

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

تعيد وقت بدء الاستعلام الحالي الأوّلي. [`DateTime`](/ar/reference/data-types/datetime)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

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

أُضيفت في: v20.6.0

تحسب نتيجة دالة تجميعية استنادًا إلى قيمة واحدة.
يمكن استخدام هذه الدالة لتهيئة دوال التجميع باستخدام المُركِّب [-State](/ar/reference/functions/aggregate-functions/combinators#-state).
يمكنك إنشاء حالات لدوال التجميع وإدراجها في أعمدة من النوع [`AggregateFunction`](/ar/reference/data-types/aggregatefunction)، أو استخدام التجميعات المُهيّأة كقيم افتراضية.

**البنية**

```sql theme={null}
initializeAggregation(aggregate_function, arg1[, arg2, ...])
```

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

* `aggregate_function` — اسم دالة التجميع المراد تهيئتها. [`String`](/ar/reference/data-types/string)
* `arg1[, arg2, ...]` — وسيطات دالة التجميع. [`Any`](/ar/reference/data-types/index)

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

تُرجع نتيجة التجميع لكل صف يُمرَّر إلى الدالة. ويكون نوع الإرجاع مطابقًا لنوع الإرجاع الخاص بالدالة التي تأخذها `initializeAggregation` بوصفها الوسيط الأول. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**الاستخدام الأساسي مع uniqState**

```sql title=Query theme={null}
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
```

```response title=Response theme={null}
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘
```

**استخدام sumState و finalizeAggregation**

```sql title=Query theme={null}
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
```

```response title=Response theme={null}
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
│                          2 │ AggregateFunction(sum, UInt8) │
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘
```

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

قُدِّمت في: v20.3.0

تُرجع ما إذا كانت الوسيطة تعبيرًا ثابتًا.
والتعبير الثابت هو تعبير تكون نتيجته معروفة أثناء تحليل الاستعلام، أي قبل التنفيذ.
على سبيل المثال، تُعدّ التعبيرات المبنية على [القيم الحرفية](/ar/reference/syntax#literals) تعبيرات ثابتة.
تُستخدم هذه الدالة غالبًا لأغراض التطوير وتصحيح الأخطاء والتوضيح.

**الصيغة**

```sql theme={null}
isConstant(x)
```

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

* `x` — تعبير للتحقق منه. [`Any`](/ar/reference/data-types/index)

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

تعيد `1` إذا كان `x` ثابتًا، و`0` إذا كان `x` غير ثابت. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**تعبير ثابت**

```sql title=Query theme={null}
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
```

```response title=Response theme={null}
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
```

**ثابت مع استخدام دالة**

```sql title=Query theme={null}
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
```

```response title=Response theme={null}
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
```

**تعبير غير ثابت**

```sql title=Query theme={null}
SELECT isConstant(number)
FROM numbers(1)
```

```response title=Response theme={null}
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘
```

**سلوك الدالة now()**

```sql title=Query theme={null}
SELECT isConstant(now())
```

```response title=Response theme={null}
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘
```

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

استُحدثت في: v20.8.0

يتحقق مما إذا كان العدد العشري يحتوي على عدد كبير جدًا من الخانات بحيث لا يمكن تمثيله بشكل صحيح ضمن نوع البيانات Decimal عند دقة محددة.

**البنية**

```sql theme={null}
isDecimalOverflow(value[, precision])
```

**الوسائط**

* `value` — قيمة Decimal المطلوب التحقق منها. [`Decimal`](/ar/reference/data-types/decimal)
* `precision` — اختياري. دقة النوع Decimal. إذا لم يتم تحديده، تُستخدم الدقة الأصلية للوسيطة الأولى. [`UInt8`](/ar/reference/data-types/int-uint)

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

تعيد `1` إذا كانت قيمة Decimal تحتوي على عدد من الخانات أكبر مما تسمح به دقتها، و`0` إذا كانت قيمة Decimal تستوفي الدقة المحددة. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
```

```response title=Response theme={null}
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│                                                1 │                                             1 │                                                 1 │                                              1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘
```

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

أُضيف في: v18.16.0

يتيح لك استخراج البيانات من جدول بالطريقة نفسها كما لو كانت من قاموس.
يجلب البيانات من جداول Join باستخدام مفتاح الربط المحدد.

<Note>
  يدعم فقط الجداول التي أُنشئت باستخدام `ENGINE = Join(ANY, LEFT, <join_keys>)` [عبارة](/ar/reference/engines/table-engines/special/join).
</Note>

**الصياغة**

```sql theme={null}
joinGet(join_storage_table_name, value_column, join_keys)
```

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

* `join_storage_table_name` — معرّف يحدّد مكان إجراء البحث. يُبحث عن هذا المعرّف في قاعدة البيانات الافتراضية (راجع المَعلمة `default_database` في ملف الإعدادات). لتجاوز قاعدة البيانات الافتراضية، استخدم الاستعلام `USE database_name` أو حدّد قاعدة البيانات والجدول باستخدام نقطة، مثل `database_name.table_name`. [`String`](/ar/reference/data-types/string)
* `value_column` — اسم عمود الجدول الذي يحتوي على البيانات المطلوبة. [`const String`](/ar/reference/data-types/string)
* `join_keys` — قائمة بمفاتيح الربط. [`Any`](/ar/reference/data-types/index)

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

يعيد قائمة من القيم المقابلة لقائمة المفاتيح. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(db_test.id_val, 'val', toUInt32(1));
```

```response title=Response theme={null}
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘
```

**الاستخدام مع جدول من قاعدة البيانات الحالية**

```sql title=Query theme={null}
USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
```

```response title=Response theme={null}
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘
```

**استخدام المصفوفات كمفاتيح للربط**

```sql title=Query theme={null}
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');

SELECT joinGet(some_table, 'name', 1, 11);
```

```response title=Response theme={null}
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘
```

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

قُدِّمت في: v20.4.0

تتيح لك استخراج البيانات من جدول بالطريقة نفسها المتبعة مع القاموس.
تجلب البيانات من جداول Join باستخدام مفتاح join المحدد.
وعلى خلاف [`joinGet`](#joinGet)، فإنها تُرجع `NULL` عندما يكون المفتاح غير موجود.

<Note>
  لا تدعم إلا الجداول المُنشأة باستخدام [تعليمة](/ar/reference/engines/table-engines/special/join) `ENGINE = Join(ANY, LEFT, <join_keys>)`.
</Note>

**الصياغة**

```sql theme={null}
joinGetOrNull(join_storage_table_name, value_column, join_keys)
```

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

* `join_storage_table_name` — معرّف يحدّد مكان إجراء البحث. يُجرى البحث عن هذا المعرّف في قاعدة البيانات `default` (راجع المعامل default\_database في ملف الإعدادات). لتجاوز قاعدة البيانات `default`، استخدم الاستعلام `USE database_name` أو حدِّد قاعدة البيانات والجدول باستخدام نقطة، مثل `database_name.table_name`. [`String`](/ar/reference/data-types/string)
* `value_column` — اسم العمود في الجدول الذي يحتوي على البيانات المطلوبة. [`const String`](/ar/reference/data-types/string)
* `join_keys` — قائمة بمفاتيح الربط. [`Any`](/ar/reference/data-types/index)

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

يعيد قائمة بالقيم المقابلة لقائمة المفاتيح، أو `NULL` إذا لم يُعثر على مفتاح. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGetOrNull(db_test.id_val, 'val', toUInt32(1)), joinGetOrNull(db_test.id_val, 'val', toUInt32(999));
```

```response title=Response theme={null}
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘
```

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

تمت إضافته في: v18.12.0

تعيد هذه الدالة موضع قيمة في القاموس الخاص بعمود [LowCardinality](/ar/reference/data-types/lowcardinality). تبدأ المواضع من 1. ونظرًا لأن LowCardinality يستخدم قواميس لكل جزء، فقد تُرجِع هذه الدالة مواضع مختلفة للقيمة نفسها في أجزاء مختلفة.

**الصياغة**

```sql theme={null}
lowCardinalityIndices(col)
```

**الوسائط**

* `col` — عمود منخفض الكاردينالية. [`LowCardinality`](/ar/reference/data-types/lowcardinality)

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

موضع القيمة في القاموس الخاص بالجزء الحالي. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**أمثلة الاستخدام**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- create two parts:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityIndices(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │                        1 │
│ cd │                        2 │
│ ab │                        1 │
│ ab │                        1 │
│ df │                        3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │                        1 │
│ cd │                        2 │
│ ab │                        3 │
│ cd │                        2 │
│ ef │                        1 │
└────┴──────────────────────────┘
```

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

أُضيف في: v18.12.0

تُرجع قيم القاموس لعمود [LowCardinality](/ar/reference/data-types/lowcardinality).
إذا كانت الكتلة أصغر من حجم القاموس أو أكبر منه، فستُقتطع النتيجة أو تُستكمل باستخدام القيم الافتراضية.
ونظرًا لأن LowCardinality تستخدم قواميس منفصلة لكل جزء، فقد تُرجع هذه الدالة قيم قاموس مختلفة في الأجزاء المختلفة.

**البنية**

```sql theme={null}
lowCardinalityKeys(col)
```

**الوسائط**

* `col` — عمود منخفض التعددية. [`LowCardinality`](/ar/reference/data-types/lowcardinality)

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

يُرجع مفاتيح القاموس. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**lowCardinalityKeys**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- create two parts:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityKeys(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │                       │
│ cd │ ef                    │
│ ab │ cd                    │
│ cd │ ab                    │
│ ef │                       │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │                       │
│ cd │ ab                    │
│ ab │ cd                    │
│ ab │ df                    │
│ df │                       │
└────┴───────────────────────┘
```

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

استُحدث في: v1.1.0

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

**الصيغة**

```sql theme={null}
materialize(x)
```

**الوسائط**

* `x` — ثابت. [`Any`](/ar/reference/data-types/index)

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

يعيد عمودًا كاملاً يحتوي على القيمة الثابتة. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
-- In the example below the `countMatches` function expects a constant second argument.
-- This behaviour can be debugged by using the `materialize` function to turn a constant into a full column,
-- verifying that the function throws an error for a non-constant argument.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
```

```response title=Response theme={null}
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
```

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

قُدِّمت في: v23.10.0

تحسب الحد الأدنى المطلوب لحجم العينة لاختبار A/B يقارن متوسطات مقياس مستمر بين عينتين.

تستخدم الصيغة الموضحة في [هذه المقالة](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a).
وتفترض تساوي حجمي مجموعتي المعالجة والمجموعة الضابطة.
وتُرجع حجم العينة المطلوب لمجموعة واحدة (أي إن حجم العينة المطلوب للتجربة بأكملها يساوي ضعف القيمة المُرجعة).
كما تفترض أيضًا تساوي تباين مقياس الاختبار في مجموعتي المعالجة والمجموعة الضابطة.

**الصيغة**

```sql theme={null}
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
```

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

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

* `baseline` — القيمة المرجعية لمقياس. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)
* `sigma` — الانحراف المعياري المرجعي لمقياس. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)
* `mde` — الحد الأدنى للأثر القابل للاكتشاف (MDE) كنسبة مئوية من القيمة المرجعية (على سبيل المثال، إذا كانت القيمة المرجعية 112.25، فإن قيمة MDE البالغة 0.03 تعني تغيرًا متوقعًا إلى 112.25 ± 112.25\*0.03). [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)
* `power` — القدرة الإحصائية المطلوبة للاختبار (1 - احتمال الخطأ من النوع الثاني). [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)
* `alpha` — مستوى الدلالة المطلوب للاختبار (احتمال الخطأ من النوع الأول). [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float)

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

تعيد Tuple مُسمّاة تحتوي على 3 عناصر: `minimum_sample_size` و `detect_range_lower` و `detect_range_upper`. وتمثل هذه العناصر، على الترتيب: حجم العينة المطلوب، والحد الأدنى لنطاق القيم التي لا يمكن اكتشافها باستخدام حجم العينة المطلوب المُعاد، ويُحسب على النحو `baseline * (1 - mde)`، والحد الأعلى لنطاق القيم التي لا يمكن اكتشافها باستخدام حجم العينة المطلوب المُعاد، ويُحسب على النحو `baseline * (1 + mde)` ‏(Float64). [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**minSampleSizeContinuous**

```sql title=Query theme={null}
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(616.2931945826209,108.8825,115.6175)
```

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

أُضيف في: v22.6.0

يحسب الحد الأدنى المطلوب لحجم العينة لاختبار A/B يقارن معدلات التحويل (النِّسب) بين عينتين.

يستخدم الصيغة الموضحة في [هذه المقالة](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a). ويفترض تساوي حجمَي مجموعتي المعالجة والضبط. ويُرجع حجم العينة المطلوب لمجموعة واحدة (أي إن حجم العينة المطلوب للتجربة بأكملها يساوي ضعف القيمة المُعادة).

**الصيغة**

```sql theme={null}
minSampleSizeConversion(baseline, mde, power, alpha)
```

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

* `baseline` — معدل التحويل الأساسي. [`Float*`](/ar/reference/data-types/float)
* `mde` — الحد الأدنى للأثر القابل للاكتشاف (MDE) بالنقاط المئوية (على سبيل المثال، إذا كان معدل التحويل الأساسي 0.25، فإن قيمة MDE البالغة 0.03 تعني تغيرًا متوقعًا إلى 0.25 ± 0.03). [`Float*`](/ar/reference/data-types/float)
* `power` — القدرة الإحصائية المطلوبة للاختبار (1 - احتمال خطأ من النوع الثاني). [`Float*`](/ar/reference/data-types/float)
* `alpha` — مستوى الدلالة المطلوب للاختبار (احتمال خطأ من النوع الأول). [`Float*`](/ar/reference/data-types/float)

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

تعيد قيمة `Tuple` مُسمّاة تتكون من 3 عناصر: `minimum_sample_size` و`detect_range_lower` و`detect_range_upper`. وتمثل هذه العناصر، على الترتيب: حجم العينة المطلوب، والحد الأدنى لنطاق القيم غير القابلة للاكتشاف باستخدام حجم العينة المطلوب المُعاد، ويُحسب على أنه `baseline - mde`، والحد الأعلى لنطاق القيم غير القابلة للاكتشاف باستخدام حجم العينة المطلوب المُعاد، ويُحسب على أنه `baseline + mde`. [`Tuple(Float64, Float64, Float64)`](/ar/reference/data-types/tuple)

**أمثلة**

**minSampleSizeConversion**

```sql title=Query theme={null}
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(3396.077603219163,0.22,0.28)
```

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

أُضيفت في: v20.1.0

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

يمكن تمكين هذه الدالة عن طريق تعيين `allow_deprecated_error_prone_window_functions = 1`.

**البنية**

```sql theme={null}
neighbor(column, offset[, default_value])
```

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

* `column` — العمود المصدر. [`Any`](/ar/reference/data-types/index)
* `offset` — الإزاحة من الصف الحالي. تشير القيم الموجبة إلى الأمام، وتشير القيم السالبة إلى الخلف. [`Integer`](/ar/reference/data-types/int-uint)
* `default_value` — اختياري. القيمة التي تُعاد إذا تجاوزت الإزاحة حدود البيانات. إذا لم يُحدَّد، تُستخدَم القيمة الافتراضية لنوع العمود. [`Any`](/ar/reference/data-types/index)

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

تُعيد قيمة عند الإزاحة المحددة، أو القيمة الافتراضية إذا كانت خارج الحدود. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘
```

**مع القيمة الافتراضية**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2, 999)─┐
│      0 │                        2 │
│      1 │                        3 │
│      2 │                        4 │
│      3 │                        5 │
│      4 │                        6 │
│      5 │                        7 │
│      6 │                        8 │
│      7 │                        9 │
│      8 │                      999 │
│      9 │                      999 │
└────────┴──────────────────────────┘
```

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

أُضيفت في: v20.8.0

تستبدل القيم الحرفية، وتسلسلات القيم الحرفية، والأسماء المستعارة المعقدة (التي تحتوي على فراغات، أو أكثر من رقمين، أو يبلغ طولها 36 بايتًا على الأقل مثل UUIDs) بالرمز النائب `?`.

**البنية**

```sql theme={null}
normalizeQuery(x)
```

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

* `x` — تسلسل من المحارف. [`String`](/ar/reference/data-types/string)

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

تُعيد تسلسل المحارف المُعطى مع عناصر نائبة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT normalizeQuery('[1, 2, 3, x]') AS query
```

```response title=Response theme={null}
┌─query────┐
│ [?.., x] │
└──────────┘
```

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

قُدِّمت في: v21.2.0

تستبدل القيم الحرفية وسلاسل القيم الحرفية بالعنصر النائب `?`، لكنها لا تستبدل الأسماء المستعارة المعقّدة (التي تحتوي على مسافات بيضاء، أو أكثر من رقمين، أو التي يبلغ طولها 36 بايتًا على الأقل، مثل UUIDs).
يساعد ذلك على تحليل سجلات الاستعلام المعقّدة بشكل أفضل.

**الصيغة**

```sql theme={null}
normalizeQueryKeepNames(x)
```

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

* `x` — سلسلة من الأحرف. [`String`](/ar/reference/data-types/string)

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

تعيد سلسلة الأحرف المحددة مع العناصر النائبة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
```

```response title=Response theme={null}
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?`                               │ SELECT ? AS aComplexName123                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
```

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

قُدِّمت في: v20.8.0

تعيد قيم hash متطابقة بطول 64 بت، من دون قيم القيم الحرفية، للاستعلامات المتشابهة.
يمكن أن يكون ذلك مفيدًا في تحليل سجلات الاستعلامات.

**الصيغة**

```sql theme={null}
normalizedQueryHash(x)
```

**الوسائط**

* `x` — تسلسل من الأحرف. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة تجزئة من 64 بت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

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

أُضيفت في: v21.2.0

على غرار [`normalizedQueryHash`](#normalizedQueryHash)، تُرجِع هذه الدالة قيم hash متطابقة بطول 64 بت للاستعلامات المتشابهة من دون قيم القيم الحرفية، لكنها لا تستبدل الأسماء المستعارة المعقدة (التي تحتوي على مسافات، أو أكثر من رقمين، أو التي يبلغ طولها 36 بايتًا على الأقل مثل UUIDs) بعنصر نائب قبل إجراء hash.
وقد يكون ذلك مفيدًا في تحليل سجلات الاستعلامات.

**البنية**

```sql theme={null}
normalizedQueryHashKeepNames(x)
```

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

* `x` — سلسلة من الأحرف. [`String`](/ar/reference/data-types/string)

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

يعيد قيمة تجزئة بطول 64 بت. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
```

```response title=Response theme={null}
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘
```

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

أُضيف في: v26.4.0

يُموّه استعلام SQL عبر استبدال المعرّفات بكلمات عشوائية والقيم الحرفية بقيم عشوائية، مع الحفاظ على بنية الاستعلام.

تكون هذه الدالة مفيدة لإخفاء هوية الاستعلامات قبل تسجيلها أو مشاركتها لأغراض تصحيح الأخطاء.
وستنتج الصفوف المختلفة نتائج تمويه مختلفة حتى مع استعلام الإدخال نفسه، مما يساعد
في الحفاظ على الخصوصية عند العمل مع عدة استعلامات.

تمنع المعلَمة الاختيارية `tag` إزالة التعبيرات الفرعية المشتركة عندما يُستخدم استدعاء الدالة نفسه
عدة مرات في استعلام. ويضمن ذلك أن ينتج كل استدعاء نتيجة تمويه مختلفة.

الميزات:

* يستبدل أسماء الجداول وأسماء الأعمدة والأسماء المستعارة بكلمات عشوائية
* يستبدل القيم الحرفية الرقمية والنصية بقيم عشوائية
* يحافظ على البنية العامة للاستعلام وصياغة SQL
* ينتج نتائج مختلفة لصفوف مختلفة

**الصيغة**

```sql theme={null}
obfuscateQuery(query[, tag])
```

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

* `query` — استعلام SQL المطلوب تمويهه. [`String`](/ar/reference/data-types/string)
* `tag` — اختياري. قيمة لمنع إزالة التعبيرات الفرعية المشتركة عند استخدام استدعاء الدالة نفسه عدة مرات.

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

الاستعلام المُموَّه بعد استبدال المعرّفات والقيم الحرفية مع الحفاظ على البنية الأصلية للاستعلام. [`String`](/ar/reference/data-types/string)

**أمثلة**

**الاستخدام الأساسي**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
```

```response title=Response theme={null}
SELECT fruit, number FROM table WHERE number > 12
```

**باستخدام وسم لمنع إزالة التعبيرات الفرعية المشتركة**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
```

```response title=Response theme={null}
SELECT a FROM b, SELECT c FROM d
```

**تعطي الصفوف المختلفة نتائج مختلفة**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
```

```response title=Response theme={null}
A B
```

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

أُضيف في: v26.4.0

يُموّه استعلام SQL باستخدام قيمة seed محددة للحصول على نتائج حتمية.

بخلاف `obfuscateQuery()`, تُنتج هذه الدالة نتائج حتمية عند تزويدها بالقيمة نفسها من seed.
ويكون ذلك مفيدًا عندما تحتاج إلى تمويه متسق عبر عمليات تشغيل متعددة، أو عندما تريد
إعادة إنتاج الاستعلام المُموَّه نفسه لأغراض الاختبار أو تصحيح الأخطاء.

الميزات:

* تمويه حتمي استنادًا إلى قيمة seed المقدمة
* تؤدي قيمة seed نفسها دائمًا إلى النتيجة المُموَّهة نفسها
* تؤدي قيم seed المختلفة إلى نتائج مختلفة
* يحافظ على بنية الاستعلام مثل `obfuscateQuery()`

حالات الاستخدام:

* حالات اختبار قابلة لإعادة الإنتاج
* إخفاء هوية متسق عبر عمليات تشغيل متعددة
* تصحيح الأخطاء باستخدام استعلامات مُموَّهة متسقة

**الصيغة**

```sql theme={null}
obfuscateQueryWithSeed(query, seed)
```

**الوسائط**

* `query` — استعلام SQL المراد تمويهه. [`String`](/ar/reference/data-types/string)
* `seed` — قيمة البذرة للتمويه. تؤدي البذرة نفسها إلى نتائج حتمية. [`Integer`](/ar/reference/data-types/int-uint) أو [`String`](/ar/reference/data-types/string)

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

الاستعلام المُموَّه، ويُولَّد بصورة حتمية استنادًا إلى البذرة المُقدَّمة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تمويه حتمي باستخدام بذرة من نوع عدد صحيح**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
```

```response title=Response theme={null}
SELECT fruit FROM table
```

**إخفاء الهوية الحتمي باستخدام seed نصي**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
```

```response title=Response theme={null}
SELECT a, b FROM c
```

**قيمة seed نفسها تعطي النتيجة نفسها**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
```

```response title=Response theme={null}
true
```

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

أُضيفت في: v24.6.0

إذا أُعطيت هذه الدالة سلسلة نصية تحتوي على حجم بالبايت مع وحدة مثل `B` أو `KiB` أو `KB` أو `MiB` أو `MB` وما إلى ذلك (أي [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) أو وحدة بايت عشرية)، فستُرجع عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فإنها تُطلق استثناءً.

العمليات العكسية لهذه الدالة هي [`formatReadableSize`](#formatReadableSize) و[`formatReadableDecimalSize`](#formatReadableDecimalSize).

**البنية**

```sql theme={null}
parseReadableSize(x)
```

**الوسائط**

* `x` — حجم بصيغة مقروءة مع وحدة ISO/IEC 80000-13 أو وحدة بايت عشرية. [`String`](/ar/reference/data-types/string)

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

يعيد عدد البايتات، مُقرَّبًا للأعلى إلى أقرب عدد صحيح. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
└────────────────┴─────────┘
```

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

أُضيف في: v24.6.0

إذا أُعطيت هذه الدالة سلسلة نصية تتضمن حجم بايت ووحدة مثل `B` أو `KiB` أو `KB` أو `MiB` أو `MB` وما إلى ذلك (أي [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) أو وحدة بايت عشرية)، فإنها تُرجع عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فإنها تُرجع `NULL`.

العمليات العكسية لهذه الدالة هي [`formatReadableSize`](#formatReadableSize) و[`formatReadableDecimalSize`](#formatReadableDecimalSize).

**الصياغة**

```sql theme={null}
parseReadableSizeOrNull(x)
```

**الوسائط**

* `x` — حجم بصيغة مقروءة باستخدام ISO/IEC 80000-13 أو وحدة بايت عشرية. [`String`](/ar/reference/data-types/string)

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

يُرجع عدد البايتات، مُقرَّبًا للأعلى إلى أقرب عدد صحيح، أو `NULL` إذا تعذّر تحليل الإدخال [`Nullable(UInt64)`](/ar/reference/data-types/nullable)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘
```

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

أُضيفت في: v24.6.0

إذا كانت لديك سلسلة نصية تحتوي على حجم بالبايت ووحدة مثل `B` أو `KiB` أو `KB` أو `MiB` أو `MB` وما إلى ذلك (أي [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) أو وحدة البايت العشرية)، فستُرجع هذه الدالة عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فستُرجع `0`.

العمليتان العكسيتان لهذه الدالة هما [`formatReadableSize`](#formatReadableSize) و[`formatReadableDecimalSize`](#formatReadableDecimalSize).

**الصياغة**

```sql theme={null}
parseReadableSizeOrZero(x)
```

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

* `x` — حجم بصيغة مقروءة وفق ISO/IEC 80000-13 أو بوحدة بايت عشرية. [`String`](/ar/reference/data-types/string)

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

يعيد عدد البايتات، مُقرَّبًا إلى الأعلى لأقرب عدد صحيح، أو `0` إذا تعذّر تحليل المُدخل. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │       0 │
└────────────────┴─────────┘
```

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

أُضيف في: v22.7.0

يحلّل تسلسلًا من الأرقام يتبعه ما يشبه وحدة زمنية.

تستخدم سلسلة الفاصل الزمني هذه مواصفات وحدات الزمن التالية:

* `years`, `year`, `yr`, `y`
* `months`, `month`, `mo`
* `weeks`, `week`, `w`
* `days`, `day`, `d`
* `hours`, `hour`, `hr`, `h`
* `minutes`, `minute`, `min`, `m`
* `seconds`, `second`, `sec`, `s`
* `milliseconds`, `millisecond`, `millisec`, `ms`
* `microseconds`, `microsecond`, `microsec`, `μs`, `µs`, `us`
* `nanoseconds`, `nanosecond`, `nanosec`, `ns`

يمكن الجمع بين عدة وحدات زمنية باستخدام الفواصل (مسافة، `;`، `-`، `+`، `,`، `:`).

أطوال السنوات والأشهر تقريبية: السنة 365 يومًا، والشهر 30.5 يومًا.

**الصيغة**

```sql theme={null}
parseTimeDelta(timestr)
```

**الوسائط**

* `timestr` — سلسلة من الأرقام يتبعها ما يشبه وحدة زمنية. [`String`](/ar/reference/data-types/string)

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

عدد الثواني. [`Float64`](/ar/reference/data-types/float)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT parseTimeDelta('11s+22min')
```

```response title=Response theme={null}
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
```

**وحدات زمنية مركّبة**

```sql title=Query theme={null}
SELECT parseTimeDelta('1yr2mo')
```

```response title=Response theme={null}
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘
```

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

قُدِّمت في: v21.4.0

تحسب [معرّف التقسيم](/ar/reference/engines/table-engines/mergetree-family/custom-partitioning-key).

<Note>
  هذه الدالة بطيئة، ويجب عدم استدعائها لأعداد كبيرة من الصفوف.
</Note>

**الصيغة**

```sql theme={null}
partitionId(column1[, column2, ...])
```

**الأسماء المستعارة**: `partitionID`

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

* `column1, column2, ...` — العمود الذي سيُعاد معرّف القسم الخاص به.

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

يُعيد معرّف القسم الذي ينتمي إليه الصف. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
DROP TABLE IF EXISTS tab;

CREATE TABLE tab
(
  i int,
  j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();

INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);

SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
```

```response title=Response theme={null}
┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1              │ 1             │
│ 1 │ 2 │ 1              │ 1             │
│ 1 │ 3 │ 1              │ 1             │
│ 2 │ 4 │ 2              │ 2             │
│ 2 │ 5 │ 2              │ 2             │
│ 2 │ 6 │ 2              │ 2             │
└───┴───┴────────────────┴───────────────┘
```

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

قُدِّمت في: v21.9.0

يُرجع معرّف الاستعلام الحالي.
يمكن استخراج المعلمات الأخرى للاستعلام من الحقل `query_id` في الجدول [`system.query_log`](/ar/reference/system-tables/query_log).

بخلاف الدالة [`initialQueryID`](#initialQueryID)، قد تُرجع `queryID` نتائج مختلفة على المقاطع المختلفة.

**البنية**

```sql theme={null}
queryID()
```

**الأسماء المستعارة**: `query_id`

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

* لا شيء.

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

يُرجع معرّف الاستعلام الحالي. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘
```

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

قُدِّم في: v22.7.0

يُرجع رقم مراجعة خادم ClickHouse الحالي.

**البنية**

```sql theme={null}
revision()
```

**الوسائط**

* لا شيء.

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

يعيد رقم المراجعة الحالي لخادم ClickHouse. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT revision()
```

```response title=Response theme={null}
┌─revision()─┐
│      54485 │
└────────────┘
```

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

أُضيف في: v1.1.0

يعيد رقم صف فريدًا لكل صف مُعالَج.

**الصياغة**

```sql theme={null}
rowNumberInAllBlocks()
```

**الوسائط**

* لا شيء.

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

تُرجع الرقم الترتيبي للصف في كتلة البيانات ابتداءً من `0`. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘
```

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

أُضيف في: v1.1.0

بالنسبة إلى كل [كتلة](/ar/resources/develop-contribute/introduction/architecture#block) يعالجها `rowNumberInBlock`، تُرجِع الدالة رقم الصف الحالي.

يبدأ الرقم المُعاد من 0 في كل كتلة.

**البنية**

```sql theme={null}
rowNumberInBlock()
```

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

* لا شيء.

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

تُرجِع الرقم الترتيبي للصف في كتلة البيانات ابتداءً من `0`. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
```

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

أُضيفت في: v1.1.0

تُراكم حالات دالة تجميع لكل صف ضمن كتلة بيانات.

<Warning>
  **مهملة**

  يُعاد تعيين الحالة مع كل كتلة بيانات جديدة.
  ونظرًا إلى هذا السلوك المعرّض للأخطاء، فقد أُهمِلت هذه الدالة، ويُنصح باستخدام [دوال النوافذ](/ar/reference/functions/window-functions/index) بدلًا منها.
  يمكنك استخدام الإعداد [`allow_deprecated_error_prone_window_functions`](/ar/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) للسماح باستخدام هذه الدالة.
</Warning>

**البنية**

```sql theme={null}
runningAccumulate(agg_state[, grouping])
```

**الوسائط**

* `agg_state` — حالة الدالة التجميعية. [`AggregateFunction`](/ar/reference/data-types/aggregatefunction)
* `grouping` — اختياري. مفتاح التجميع. تُعاد تهيئة حالة الدالة إذا تغيّرت قيمة `grouping`. ويمكن أن يكون من أيٍّ من أنواع البيانات المدعومة التي يكون فيها عامل المساواة معرّفًا. [`Any`](/ar/reference/data-types/index)

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

تعيد النتيجة المتراكمة لكل صف. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام مع initializeAggregation**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

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

استُحدث في: v21.3.0

يحسب عدد الأحداث المتزامنة.
لكل حدث وقت بداية ووقت نهاية.
يُحتسب وقت البداية ضمن الحدث، بينما لا يُحتسب وقت النهاية.
يجب أن تكون الأعمدة التي تتضمن وقت بداية ووقت نهاية من نوع البيانات نفسه.
تحسب الدالة العدد الإجمالي للأحداث النشطة (المتزامنة) لكل وقت بداية حدث.

<Tip>
  **المتطلبات**

  يجب ترتيب الأحداث حسب وقت البداية ترتيبًا تصاعديًا.
  إذا لم يُستوفَ هذا الشرط، فستُطلق الدالة استثناءً.
  تُعالَج كل كتلة بيانات على حدة.
  إذا تداخلت أحداث من كتل بيانات مختلفة، فلن تتم معالجتها على نحو صحيح.
</Tip>

<Warning>
  **مهمل**

  يُنصح باستخدام [دوال النافذة](/ar/reference/functions/window-functions/index) بدلًا من ذلك.
</Warning>

**البنية**

```sql theme={null}
runningConcurrency(start, end)
```

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

* `start` — عمود يحتوي على وقت بدء الأحداث. [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`DateTime64`](/ar/reference/data-types/datetime64)
* `end` — عمود يحتوي على وقت انتهاء الأحداث. [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`DateTime64`](/ar/reference/data-types/datetime64)

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

يعيد عدد الأحداث المتزامنة عند وقت بدء كل حدث. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT start, runningConcurrency(start, end) FROM example_table;
```

```response title=Response theme={null}
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘
```

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

قُدِّمت في: v1.1.0

تحسب الفرق بين قيمتَي صفّين متتاليين داخل كتلة البيانات.
وتُرجِع `0` للصف الأول، أما الصفوف اللاحقة فتُرجِع الفرق مقارنةً بالصف السابق.

<Warning>
  **مهملة**

  لا تُرجِع الفروق إلا داخل كتلة البيانات التي تُعالَج حاليًا.
  وبسبب هذا السلوك المعرّض للأخطاء، أُهمِلت هذه الدالة.
  يُنصَح باستخدام [window functions](/ar/reference/functions/window-functions/index) بدلًا منها.

  يمكنك استخدام الإعداد [`allow_deprecated_error_prone_window_functions`](/ar/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) للسماح باستخدام هذه الدالة.
</Warning>

تعتمد نتيجة الدالة على كتل البيانات المعنية وترتيب البيانات داخل الكتلة.
وقد يختلف ترتيب الصفوف أثناء حساب `runningDifference()` عن ترتيب الصفوف المُعادة إلى المستخدم.
ولتجنّب ذلك، يمكنك إنشاء استعلام فرعي باستخدام [`ORDER BY`](/ar/reference/statements/select/order-by) ثم استدعاء الدالة من خارج هذا الاستعلام الفرعي.
يرجى ملاحظة أن حجم الكتلة يؤثر في النتيجة.
تُعاد تهيئة الحالة الداخلية للدالة `runningDifference` مع كل كتلة جديدة.

**الصياغة**

```sql theme={null}
runningDifference(x)
```

**الوسائط**

* `x` — العمود الذي يُحسب له الفرق التراكمي. [`Any`](/ar/reference/data-types/index)

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

يعيد الفرق بين كل قيمتين متتاليتين، وتكون القيمة 0 في الصف الأول.

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
```

```response title=Response theme={null}
┌─EventID─┬───────────EventTime─┬─delta─┐
│    1106 │ 2025-11-24 00:00:04 │     0 │
│    1107 │ 2025-11-24 00:00:05 │     1 │
│    1108 │ 2025-11-24 00:00:05 │     0 │
│    1109 │ 2025-11-24 00:00:09 │     4 │
│    1110 │ 2025-11-24 00:00:10 │     1 │
└─────────┴─────────────────────┴───────┘
```

**مثال على تأثير حجم الكتلة**

```sql title=Query theme={null}
SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘
```

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

أُضيفت في: v1.1.0

تحسب الفرق بين قيم الصفوف المتتالية في كتلة بيانات، ولكن بخلاف [`runningDifference`](#runningDifference)، فإنها تُرجع القيمة الفعلية للصف الأول بدلًا من `0`.

<Warning>
  **مهملة**

  تُرجع الفروق فقط داخل كتلة البيانات الجاري معالجتها حاليًا.
  ونظرًا لأن هذا السلوك قد يؤدي إلى أخطاء، فقد أُهملت هذه الدالة.
  يُنصح باستخدام [دوال النافذة](/ar/reference/functions/window-functions/index) بدلًا من ذلك.

  يمكنك استخدام الإعداد `allow_deprecated_error_prone_window_functions` للسماح باستخدام هذه الدالة.
</Warning>

**الصيغة**

```sql theme={null}
runningDifferenceStartingWithFirstValue(x)
```

**الوسائط**

* `x` — العمود المراد حساب الفرق التراكمي له. [`Any`](/ar/reference/data-types/index)

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

يعيد الفرق بين القيم المتتالية، وتكون قيمة الصف الأول هي قيمة الصف الأول نفسها. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘
```

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

أُضيف في: v20.1.0

يعيد معرّف UUID (v4) عشوائيًا وفريدًا يُولَّد عند بدء تشغيل الخادم لأول مرة.
ويُحفَظ هذا المعرّف، أي إن تشغيل الخادم للمرة الثانية أو الثالثة أو ما بعدها يعيد معرّف UUID نفسه.

**الصيغة**

```sql theme={null}
serverUUID()
```

**الوسائط**

* لا توجد.

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

يُرجع معرّف UUID عشوائيًا للخادم. [`UUID`](/ar/reference/data-types/uuid)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT serverUUID();
```

```response title=Response theme={null}
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘
```

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

استُحدث في: v21.9.0

يعيد العدد الإجمالي للشظايا في الاستعلام الموزع.
إذا لم يكن الاستعلام موزعًا، فستُعاد القيمة الثابتة `0`.

**البنية**

```sql theme={null}
shardCount()
```

**الوسائط**

* لا شيء.

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

يُرجع العدد الإجمالي للشظايا أو `0`. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
-- See shardNum() example above which also demonstrates shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
```

```response title=Response theme={null}
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘
```

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

تم تقديمه في: v21.9.0

يعيد فهرس الشظية التي تعالج جزءًا من البيانات في استعلام موزّع.
تبدأ الفهارس من `1`.
إذا لم يكن الاستعلام موزّعًا، فستُعاد قيمة ثابتة هي `0`.

**البنية**

```sql theme={null}
shardNum()
```

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

* لا يوجد.

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

تعيد فهرس الجزء أو القيمة الثابتة `0`. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
```

```response title=Response theme={null}
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘
```

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

أُضيف في: v22.6.0

يعرض معلومات عن شهادة SSL الخاصة بالخادم الحالي إذا كانت مُهيّأة.
راجع [إعداد TLS](/ar/concepts/features/security/tls/configuring-tls) لمزيد من المعلومات حول كيفية إعداد ClickHouse لاستخدام شهادات OpenSSL للتحقق من الاتصالات.

**الصيغة**

```sql theme={null}
showCertificate()
```

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

* لا شيء.

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

تعيد خريطةً من أزواج المفتاح والقيمة المرتبطة بشهادة SSL المُعدّة. [`Map(String, String)`](/ar/reference/data-types/map)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT showCertificate() FORMAT LineAsString;
```

```response title=Response theme={null}
{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May  7 17:01:21 2024 GMT','not_after':'May  7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}
```

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

قُدِّمت في: v1.1.0

توقف تنفيذ الاستعلام مؤقتًا لمدة عدد الثواني المحدد.
تُستخدم هذه الدالة أساسًا لأغراض الاختبار واستكشاف الأخطاء وإصلاحها.

بوجه عام، لا ينبغي استخدام الدالة `sleep()` في بيئات production، لأنها قد تؤثر سلبًا في أداء الاستعلام واستجابة النظام.
ومع ذلك، قد تكون مفيدة في السيناريوهات التالية:

1. **الاختبار**: عند اختبار ClickHouse أو إجراء benchmarking له، قد ترغب في محاكاة حالات تأخير أو إدخال توقفات مؤقتة لملاحظة كيفية تصرف النظام في ظروف معينة.
2. **استكشاف الأخطاء وإصلاحها**: إذا كنت بحاجة إلى فحص حالة النظام أو تنفيذ استعلام عند نقطة زمنية محددة، فيمكنك استخدام `sleep()` لإدخال توقف مؤقت، مما يتيح لك فحص المعلومات ذات الصلة أو جمعها.
3. **المحاكاة**: في بعض الحالات، قد ترغب في محاكاة سيناريوهات واقعية تحدث فيها حالات تأخير أو توقفات مؤقتة، مثل كمون الشبكة أو اعتماديات الأنظمة الخارجية.

<Warning>
  من المهم استخدام الدالة `sleep()` بحذر وعند الضرورة فقط، لأنها قد تؤثر في الأداء العام واستجابة نظام ClickHouse لديك.
</Warning>

لأسباب أمنية، لا يمكن تنفيذ هذه الدالة إلا ضمن ملف تعريف المستخدم default (مع تفعيل `allow_sleep`).

**الصيغة**

```sql theme={null}
sleep(seconds)
```

**الوسائط**

* `seconds` — عدد الثواني المطلوب إيقاف تنفيذ الاستعلام مؤقتًا خلالها، بحد أقصى 3 ثوانٍ. ويمكن أن تكون قيمة ذات فاصلة عائمة لتحديد أجزاء من الثانية. [`const UInt*`](/ar/reference/data-types/int-uint) أو [`const Float*`](/ar/reference/data-types/float)

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

يعيد `0`. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
-- This query will pause for 2 seconds before completing.
-- During this time, no results will be returned, and the query will appear to be hanging or unresponsive.
SELECT sleep(2);
```

```response title=Response theme={null}
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.
```

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

أُضيفت في: v1.1.0

توقف تنفيذ الاستعلام لعدد محدد من الثواني لكل صف في مجموعة النتائج.

تُستخدم الدالة `sleepEachRow()` بشكل أساسي لأغراض الاختبار وتصحيح الأخطاء، على غرار الدالة [`sleep()`](#sleep).
وتتيح لك محاكاة حالات التأخير أو إدخال توقفات مؤقتة أثناء معالجة كل صف، مما قد يكون مفيدًا في سيناريوهات مثل:

1. **الاختبار**: عند اختبار أداء ClickHouse أو إجراء اختبارات قياس الأداء له في ظل ظروف محددة، يمكنك استخدام `sleepEachRow()` لمحاكاة حالات التأخير أو إدخال توقفات مؤقتة لكل صف تتم معالجته.
2. **تصحيح الأخطاء**: إذا كنت بحاجة إلى فحص حالة النظام أو تنفيذ الاستعلام لكل صف تتم معالجته، فيمكنك استخدام `sleepEachRow()` لإدخال توقفات مؤقتة، مما يتيح لك فحص المعلومات ذات الصلة أو جمعها.
3. **المحاكاة**: في بعض الحالات، قد ترغب في محاكاة سيناريوهات واقعية تحدث فيها حالات تأخير أو توقفات مؤقتة لكل صف تتم معالجته، مثل عند التعامل مع أنظمة خارجية أو أزمنة استجابة الشبكة.

<Warning>
  مثل الدالة `sleep()`، من المهم استخدام `sleepEachRow()` بحذر وعند الضرورة فقط، لأنه قد يؤثر بشكل كبير في الأداء العام وسرعة استجابة نظام ClickHouse، خاصة عند التعامل مع مجموعات نتائج كبيرة.
</Warning>

**الصياغة**

```sql theme={null}
sleepEachRow(seconds)
```

**الوسائط**

* `seconds` — عدد الثواني التي يُوقَف فيها تنفيذ الاستعلام مؤقتًا لكل صف في مجموعة النتائج، بحد أقصى 3 ثوانٍ. ويمكن أن تكون قيمة فاصلة عائمة لتحديد أجزاء من الثانية. [`const UInt*`](/ar/reference/data-types/int-uint) أو [`const Float*`](/ar/reference/data-types/float)

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

يعيد `0` لكل صف. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
-- The output will be delayed, with a 0.5-second pause between each row.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
```

```response title=Response theme={null}
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘
```

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

أُضيفت في: v23.8.0

دالة تُحوِّل بنية جدول ClickHouse إلى مخطط schema بتنسيق CapnProto

**الصيغة**

```sql theme={null}
structureToCapnProtoSchema(table_structure, message)
```

**الوسائط**

* لا شيء.

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

**أمثلة**

**random**

```sql title=Query theme={null}
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
```

```response title=Response theme={null}
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}
```

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

أُضيفت في: v23.8.0

تحوّل بنية جدول ClickHouse إلى مخطط بتنسيق Protobuf.

تأخذ هذه الدالة تعريف بنية جدول ClickHouse وتحوله إلى تعريف مخطط Protocol Buffers ‏(Protobuf)
بصياغة proto3. وهذا مفيد لإنشاء مخططات Protobuf تتوافق مع
بُنى جداول ClickHouse لتبادل البيانات.

**الصيغة**

```sql theme={null}
structureToProtobufSchema(structure, message_name)
```

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

* `structure` — تعريف بنية جدول ClickHouse كسلسلة نصية (على سبيل المثال: 'column1 Type1, column2 Type2'). [`String`](/ar/reference/data-types/string)
* `message_name` — اسم نوع رسالة Protobuf في المخطط المُنشأ. [`String`](/ar/reference/data-types/string)

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

يُرجع تعريفًا لمخطط Protobuf بصيغة proto3 يتوافق مع بنية ClickHouse المُدخلة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**تحويل بنية ClickHouse إلى مخطط Protobuf**

```sql title=Query theme={null}
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
```

```response title=Response theme={null}
syntax = "proto3";

message MessageName
{
    bytes s = 1;
    uint32 x = 2;
}
```

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

أُضيفت في: v20.12.0

تعيد رقم منفذ TCP الخاص بـ [الواجهة الأصلية](/ar/concepts/features/interfaces/tcp) الذي يستمع عليه الخادم.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم مرتبطة بكل جزء.
وإلا، فإنها تُنتج قيمة ثابتة.

**الصيغة**

```sql theme={null}
tcpPort()
```

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

* لا توجد.

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

يُرجع رقم منفذ TCP. [`UInt16`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT tcpPort()
```

```response title=Response theme={null}
┌─tcpPort()─┐
│      9000 │
└───────────┘
```

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

قُدِّمت في: v1.1.0

يطرح استثناءً إذا كانت الوسيطة x تساوي true.
لاستخدام الوسيطة `error_code`، يجب تمكين معلمة الإعداد `allow_custom_error_code_in_throw`.

**الصيغة**

```sql theme={null}
throwIf(x[, message[, error_code]])
```

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

* `x` — الشرط المطلوب التحقق منه. [`Any`](/ar/reference/data-types/index)
* `message` — اختياري. رسالة خطأ مخصّصة. [`const String`](/ar/reference/data-types/string)
* `error_code` — اختياري. رمز خطأ مخصّص. [`const Int8/16/32`](/ar/reference/data-types/int-uint)

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

يعيد `0` إذا كان الشرط false، ويُطلق استثناءً إذا كان الشرط true. [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
```

```response title=Response theme={null}
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):
Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.
```

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

أُضيف في: v1.1.0

يعيد الاسم الداخلي لنوع بيانات القيمة المحددة.
وعلى خلاف الدالة [`toTypeName`](#toTypeName)، قد يشمل نوع البيانات المُعاد أعمدة مُغلِّفة داخلية مثل `Const` و`LowCardinality`.

**البنية**

```sql theme={null}
toColumnTypeName(value)
```

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

* `value` — القيمة التي يُراد إرجاع نوع البيانات الداخلي الخاص بها. [`Any`](/ar/reference/data-types/index)

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

يُرجع نوع البيانات الداخلي المستخدم لتمثيل القيمة. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
```

```response title=Response theme={null}
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘
```

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

قُدِّم في: v1.1.0

يعيد اسم النوع للوسيطة المُمرَّرة.
إذا تم تمرير `NULL`، فستُعيد الدالة النوع `Nullable(Nothing)`، وهو ما يقابل التمثيل الداخلي للقيمة `NULL` في ClickHouse.

**البنية**

```sql theme={null}
toTypeName(x)
```

**الوسائط**

* `x` — قيمة من أي نوع. [`Any`](/ar/reference/data-types/index)

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

يُرجع اسم نوع بيانات قيمة الإدخال. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT toTypeName(123)
```

```response title=Response theme={null}
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘
```

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

استُحدث في: v26.5.0

يُجزِّئ سلسلة استعلام ClickHouse SQL إلى رموز ويُعيد مصفوفة من الرموز.
كل رمز عبارة عن named tuple يتضمن موضع البداية (بالبايت)، وموضع النهاية، ونوع الرمز.

**البنية**

```sql theme={null}
tokenizeQuery(query)
```

**الوسائط**

* `query` — سلسلة استعلام في ClickHouse SQL. String.

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

مصفوفة من قيم Tuple مُسمّاة `(begin UInt64, end UInt64, type Enum8(...))` تمثل توكنات الاستعلام. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ar/reference/data-types/array)

**أمثلة**

**بسيط**

```sql title=Query theme={null}
SELECT tokenizeQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]
```

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

أُضيف في: v22.6.0

تُرجِع معرّف المعاملة.

<Note>
  هذه الدالة جزء من مجموعة ميزات تجريبية.
  فعِّل دعم المعاملات التجريبي بإضافة هذا الإعداد إلى [التهيئة](/ar/concepts/features/configuration/server-config/configuration-files):

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  لمزيد من المعلومات، راجع صفحة [دعم المعاملات (ACID)](/ar/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**البنية**

```sql theme={null}
transactionID()
```

**الوسائط**

* لا شيء.

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

تُرجِع قيمة من النوع `Tuple` تتكوّن من `start_csn` و`local_tid` و`host_id`.

* `start_csn`: رقم تسلسلي عام، وهو أحدث طابع زمني لعملية commit تمت ملاحظته عند بدء هذه المعاملة.
* `local_tid`: رقم تسلسلي محلي فريد لكل معاملة يبدأها هذا المضيف ضمن `start&#95;csn` محدد.
* `host_id`: معرّف UUID للمضيف الذي بدأ هذه المعاملة.
  [`Tuple(UInt64, UInt64, UUID)`](/ar/reference/data-types/tuple)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘
```

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

أُضيف في: v22.6.0

تعيد أحدث لقطة (Commit Sequence Number) لـ [معاملة](/ar/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) المتاحة للقراءة.

<Note>
  هذه الدالة جزء من مجموعة ميزات تجريبية. فعِّل دعم المعاملات التجريبي بإضافة هذا الإعداد إلى التهيئة:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  لمزيد من المعلومات، راجع صفحة [دعم المعاملات (ACID)](/ar/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**الصياغة**

```sql theme={null}
transactionLatestSnapshot()
```

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

* لا شيء.

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

يُرجع أحدث لقطة (CSN) لمعاملة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

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

تم تقديمه في: v22.6.0

تُرجع أقدم لقطة (Commit Sequence Number) مرئية لإحدى [المعاملات](/ar/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) الجارية.

<Note>
  هذه الدالة جزء من مجموعة ميزات تجريبية. فعِّل دعم المعاملات التجريبي بإضافة هذا الإعداد إلى التهيئة الخاصة بك:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  لمزيد من المعلومات، راجع صفحة [دعم المعاملات (ACID)](/ar/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**البنية**

```sql theme={null}
transactionOldestSnapshot()
```

**الوسائط**

* لا شيء.

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

تُعيد أقدم لقطة (CSN) لمعاملة. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

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

قُدِّمت في: v1.1.0

تحوِّل قيمةً وفق تعيين مُعرَّف صراحةً لبعض العناصر إلى عناصر أخرى.

لهذه الدالة صيغتان:

* `transform(x, array_from, array_to, default)` - تحوِّل `x` باستخدام مصفوفتَي تعيين مع قيمة `default` للعناصر غير المتطابقة
* `transform(x, array_from, array_to)` - التحويل نفسه، لكنها تعيد `x` الأصلي إذا لم يُعثر على أي تطابق

تبحث الدالة عن `x` في `array_from` وتعيد العنصر المقابل من `array_to` عند الفهرس نفسه.
إذا لم يُعثر على `x` في `array_from`، فإنها تعيد إما قيمة `default` (في نسخة المعاملات الأربعة) أو `x` الأصلي (في نسخة المعاملات الثلاثة).
إذا وُجدت عدة عناصر متطابقة في `array_from`، فإنها تعيد العنصر المقابل لأول تطابق.

المتطلبات:

* يجب أن يحتوي `array_from` و`array_to` على العدد نفسه من العناصر
* لنسخة المعاملات الأربعة: `transform(T, Array(T), Array(U), U) -> U` حيث يمكن أن يكون `T` و`U` نوعين مختلفين لكن متوافقين
* لنسخة المعاملات الثلاثة: `transform(T, Array(T), Array(T)) -> T` حيث يجب أن تكون جميع الأنواع متماثلة

**الصيغة**

```sql theme={null}
transform(x, array_from, array_to[, default])
```

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

* `x` — القيمة المطلوب تحويلها. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Decimal`](/ar/reference/data-types/decimal) أو [`Float*`](/ar/reference/data-types/float) أو [`String`](/ar/reference/data-types/string) أو [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime)
* `array_from` — مصفوفة ثابتة من القيم للبحث عن القيم المطابقة فيها. [`Array((U)Int*)`](/ar/reference/data-types/array) أو [`Array(Decimal)`](/ar/reference/data-types/array) أو [`Array(Float*)`](/ar/reference/data-types/array) أو [`Array(String)`](/ar/reference/data-types/array) أو [`Array(Date)`](/ar/reference/data-types/array) أو [`Array(DateTime)`](/ar/reference/data-types/array)
* `array_to` — مصفوفة ثابتة من القيم لإرجاع القيم المناظرة للعناصر المطابقة في `array_from`. [`Array((U)Int*)`](/ar/reference/data-types/array) أو [`Array(Decimal)`](/ar/reference/data-types/array) أو [`Array(Float*)`](/ar/reference/data-types/array) أو [`Array(String)`](/ar/reference/data-types/array) أو [`Array(Date)`](/ar/reference/data-types/array) أو [`Array(DateTime)`](/ar/reference/data-types/array)
* `default` — اختياري. القيمة التي تُعاد إذا لم يتم العثور على `x` في `array_from`. إذا لم يتم تحديده، فستُعاد `x` كما هي. [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Decimal`](/ar/reference/data-types/decimal) أو [`Float*`](/ar/reference/data-types/float) أو [`String`](/ar/reference/data-types/string) أو [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime)

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

تُعيد القيمة المناظرة من `array_to` إذا كانت `x` تطابق عنصرًا في `array_from`، وإلا فتُعيد `default` (إذا تم تحديده) أو `x` (إذا لم يتم تحديد `default`). [`Any`](/ar/reference/data-types/index)

**أمثلة**

**transform(T, Array(T), Array(U), U) -> U**

```sql title=Query theme={null}
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM test.hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
```

```response title=Response theme={null}
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘
```

**transform(T, Array(T), Array(T)) -> T**

```sql title=Query theme={null}
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM test.hits
GROUP BY domain(Referer)
ORDER BY count() DESC
LIMIT 10
```

```response title=Response theme={null}
┌─s──────────────┬───────c─┐
│                │ 2906259 │
│ www.yandex     │  867767 │
│ ███████.ru     │  313599 │
│ mail.yandex.ru │  107147 │
│ ██████.ru      │  100355 │
│ █████████.ru   │   65040 │
│ news.yandex.ru │   64515 │
│ ██████.net     │   59141 │
│ example.com    │   57316 │
└────────────────┴─────────┘
```

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

طُرح في: v22.9.0

يُستخدم كائنان من نوع uniqThetaSketch لإجراء عملية التقاطع (عملية المجموعات ∩)، وتكون النتيجة كائن uniqThetaSketch جديدًا.

**الصيغة**

```sql theme={null}
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
```

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

* `uniqThetaSketch` — كائن uniqThetaSketch. [`Tuple`](/ar/reference/data-types/tuple) أو [`Array`](/ar/reference/data-types/array) أو [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

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

كائن uniqThetaSketch جديد يحتوي على ناتج التقاطع. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘
```

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

قُدِّم في: v22.9.0

كائنان من نوع uniqThetaSketch لإجراء العملية الحسابية a\_not\_b (عملية على المجموعات ×)، وتكون النتيجة كائن uniqThetaSketch جديدًا.

**الصيغة**

```sql theme={null}
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
```

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

* `uniqThetaSketch` — كائن uniqThetaSketch. [`Tuple`](/ar/reference/data-types/tuple) أو [`Array`](/ar/reference/data-types/array) أو [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

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

يعيد كائن uniqThetaSketch جديدًا يحتوي على نتيجة a\_not\_b. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
```

```response title=Response theme={null}
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘
```

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

أُضيف في: v22.9.0

كائنان من نوع `uniqThetaSketch` لإجراء عملية الاتحاد (عملية مجموعات ∪)، وتكون النتيجة `uniqThetaSketch` جديدًا.

**الصيغة**

```sql theme={null}
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
```

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

* `uniqThetaSketch` — كائن uniqThetaSketch. [`Tuple`](/ar/reference/data-types/tuple) أو [`Array`](/ar/reference/data-types/array) أو [`Date`](/ar/reference/data-types/date) أو [`DateTime`](/ar/reference/data-types/datetime) أو [`String`](/ar/reference/data-types/string) أو [`(U)Int*`](/ar/reference/data-types/int-uint) أو [`Float*`](/ar/reference/data-types/float) أو [`Decimal`](/ar/reference/data-types/decimal)

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

يُرجع كائن uniqThetaSketch جديدًا يحتوي على نتيجة الاتحاد. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘
```

<div id="uptime">
  ## مدة التشغيل
</div>

أُضيف في: v1.1.0

يعيد مدة تشغيل الخادم بالثواني.
إذا نُفِّذت هذه الدالة في سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم مرتبطة بكل جزء.
أما خلاف ذلك، فتنتج قيمة ثابتة.

**الصيغة**

```sql theme={null}
uptime()
```

**الوسائط**

* لا يوجد.

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

يُرجع مدة تشغيل الخادم بالثواني. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT uptime() AS Uptime
```

```response title=Response theme={null}
┌─Uptime─┐
│  55867 │
└────────┘
```

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

أُضيفت في: v25.2.0

تستخرج عمودًا من النوع المحدد من عمود `Variant`.

**البنية**

```sql theme={null}
variantElement(variant, type_name[, default_value])
```

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

* `variant` — عمود Variant. [`Variant`](/ar/reference/data-types/variant)
* `type_name` — اسم نوع Variant المراد استخراجه. [`String`](/ar/reference/data-types/string)
* `default_value` — القيمة الافتراضية التي ستُستخدم إذا لم يتضمّن `variant` نوع Variant المحدد. يمكن أن تكون من أي نوع. اختياري. [`Any`](/ar/reference/data-types/index)

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

يعيد عمودًا يحتوي على نوع Variant المحدد بعد استخراجه من عمود Variant. [`Any`](/ar/reference/data-types/index)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
```

```response title=Response theme={null}
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
```

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

قُدِّم في: v24.2.0

يعيد اسم النوع المتغيّر لكل صف في عمود `Variant`. وإذا احتوى الصف على NULL، فستُعاد له القيمة 'None'.

**الصيغة**

```sql theme={null}
variantType(variant)
```

**الوسائط**

* `variant` — عمود Variant. [`Variant`](/ar/reference/data-types/variant)

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

يُرجع عمودًا من نوع Enum يحتوي على اسم نوع Variant لكل صف. [`Enum`](/ar/reference/data-types/enum)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
```

```response title=Response theme={null}
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘
```

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

أُضيف في الإصدار: v1.1.0

تعيد الإصدار الحالي من ClickHouse كسلسلة نصية بالصيغة: `major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release`.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم خاصة بكل جزء.
وبخلاف ذلك، فإنها تُنتج قيمة ثابتة.

**الصياغة**

```sql theme={null}
version()
```

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

* لا شيء.

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

يُرجع الإصدار الحالي من ClickHouse. [`String`](/ar/reference/data-types/string)

**أمثلة**

**مثال للاستخدام**

```sql title=Query theme={null}
SELECT version()
```

```response title=Response theme={null}
┌─version()─┐
│ 24.2.1.1  │
└───────────┘
```

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

ظهر لأول مرة في: v1.1.0

يحسب العرض التقريبي عند إخراج القيم إلى الطرفية بتنسيق نصي (مفصول بعلامات الجدولة).
تُستخدم هذه الدالة من قِبل النظام لتنفيذ تنسيقات Pretty.
تُمثَّل `NULL` كسلسلة نصية تقابل `NULL` في تنسيقات Pretty.

**الصيغة**

```sql theme={null}
visibleWidth(x)
```

**الوسائط**

* `x` — قيمة من أي نوع بيانات. [`Any`](/ar/reference/data-types/index)

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

يعيد العرض التقريبي للقيمة عند عرضها بتنسيق نصي. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**حساب العرض المرئي لـ NULL**

```sql title=Query theme={null}
SELECT visibleWidth(NULL)
```

```response title=Response theme={null}
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘
```

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

أُضيف في: v21.11.0

تعيد مدة تشغيل جلسة ZooKeeper الحالية بالثواني.

**البنية**

```sql theme={null}
zookeeperSessionUptime()
```

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

* لا شيء.

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

تُرجع مدة تشغيل جلسة ZooKeeper الحالية بالثواني. [`UInt32`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT zookeeperSessionUptime();
```

```response title=Response theme={null}
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘
```
