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

> توثيق لعبارة SAMPLE

# عبارة SAMPLE

تتيح عبارة `SAMPLE` معالجة استعلامات `SELECT` بصورة تقريبية.

عند تمكين أخذ العينات من البيانات، لا يُنفَّذ الاستعلام على جميع البيانات، بل على جزء محدد منها فقط (عيّنة). على سبيل المثال، إذا كنت بحاجة إلى حساب إحصاءات لجميع الزيارات، فيكفي تنفيذ الاستعلام على 1/10 من إجمالي الزيارات ثم ضرب النتيجة في 10.

يمكن أن تكون المعالجة التقريبية للاستعلامات مفيدة في الحالات التالية:

* عندما تكون لديك متطلبات صارمة لزمن الاستجابة (مثل أقل من 100ms)، لكنك لا تستطيع تبرير تكلفة موارد عتادية إضافية لتلبيتها.
* عندما لا تكون بياناتك الخام دقيقة، بحيث لا يؤدي التقريب إلى تراجع ملحوظ في الجودة.
* عندما تتطلب احتياجات العمل نتائج تقريبية (لتحقيق كفاءة من حيث التكلفة، أو لإتاحة النتائج الدقيقة للمستخدمين المتميزين).

<Note>
  لا يمكنك استخدام أخذ العينات إلا مع الجداول ضمن عائلة [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree)، وفقط إذا جرى تحديد تعبير أخذ العينات أثناء إنشاء الجدول (راجع [محرك MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table)).
</Note>

فيما يلي ميزات أخذ العينات من البيانات:

* أخذ العينات من البيانات آلية حتمية. وتكون نتيجة الاستعلام نفسه `SELECT .. SAMPLE` هي نفسها دائمًا.
* يعمل أخذ العينات بشكل متسق عبر الجداول المختلفة. بالنسبة إلى الجداول ذات مفتاح أخذ عينات واحد، فإن العيّنة ذات المعامل نفسه تختار دائمًا المجموعة الفرعية نفسها من البيانات الممكنة. على سبيل المثال، تأخذ عيّنة معرّفات المستخدمين الصفوف التي تضم المجموعة الفرعية نفسها من جميع معرّفات المستخدمين الممكنة من جداول مختلفة. وهذا يعني أنه يمكنك استخدام العيّنة في الاستعلامات الفرعية ضمن عبارة [IN](/ar/reference/statements/in). كما يمكنك أيضًا ربط العيّنات باستخدام عبارة [JOIN](/ar/reference/statements/select/join).
* يتيح أخذ العينات قراءة كمية أقل من البيانات من القرص. لاحظ أنه يجب تحديد مفتاح أخذ العينات بشكل صحيح. لمزيد من المعلومات، راجع [Creating a MergeTree Table](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table).

تدعم عبارة `SAMPLE` البنية التالية:

| بنية عبارة SAMPLE   | الوصف                                                                                                                                                                                                                             |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SAMPLE k`          | هنا `k` رقم من 0 إلى 1. يُنفَّذ الاستعلام على جزء `k` من البيانات. على سبيل المثال، يشغّل `SAMPLE 0.1` الاستعلام على 10% من البيانات. [اقرأ المزيد](#sample-k)                                                                    |
| `SAMPLE n`          | هنا `n` عدد صحيح كبير بما يكفي. يُنفَّذ الاستعلام على عيّنة تضم `n` صفًا على الأقل (ولكن ليس أكثر من ذلك بشكل ملحوظ). على سبيل المثال، يشغّل `SAMPLE 10000000` الاستعلام على حد أدنى قدره 10,000,000 صف. [اقرأ المزيد](#sample-n) |
| `SAMPLE k OFFSET m` | هنا `k` و`m` رقمان من 0 إلى 1. يُنفَّذ الاستعلام على عيّنة تمثل جزء `k` من البيانات. وتُزاح البيانات المستخدمة في العيّنة بمقدار جزء `m`. [اقرأ المزيد](#sample-k-offset-m)                                                       |

<div id="sample-k">
  ## SAMPLE K
</div>

هنا تمثّل `k` عددًا بين 0 و1 (ويدعم كلٌّ من الترميز الكسري والترميز العشري). على سبيل المثال، `SAMPLE 1/2` أو `SAMPLE 0.5`.

في عبارة `SAMPLE k`، تُؤخذ العيّنة من جزء `k` من البيانات. يَرِد المثال أدناه:

```sql theme={null}
SELECT
    Title,
    count() * 10 AS PageViews
FROM hits_distributed
SAMPLE 0.1
WHERE
    CounterID = 34
GROUP BY Title
ORDER BY PageViews DESC LIMIT 1000
```

في هذا المثال، يُنفَّذ الاستعلام على عيّنة تمثل 0.1 (10%) من البيانات. لا تُصحَّح قيم الدوال التجميعية تلقائيًا، لذا للحصول على نتيجة تقريبية، تُضرَب القيمة `count()` يدويًا في 10.

<div id="sample-n">
  ## SAMPLE N
</div>

هنا تكون `n` عددًا صحيحًا كبيرًا بما يكفي. على سبيل المثال، `SAMPLE 10000000`.

في هذه الحالة، يُنفَّذ الاستعلام على عينة تضم ما لا يقل عن `n` صفًا (ولكن ليس أكثر من ذلك بكثير). على سبيل المثال، يشغّل `SAMPLE 10000000` الاستعلام على حد أدنى يبلغ 10,000,000 صف.

نظرًا لأن أصغر وحدة لقراءة البيانات هي granule واحدة (ويُحدَّد حجمها بواسطة الإعداد `index_granularity`)، فمن المنطقي تعيين عينة أكبر بكثير من حجم الـ granule.

عند استخدام عبارة `SAMPLE n`، لن تعرف النسبة الفعلية من البيانات التي تمت معالجتها. لذلك لن تعرف المعامل الذي ينبغي ضرب الدوال التجميعية فيه. استخدم العمود الافتراضي `_sample_factor` للحصول على نتيجة تقريبية.

يحتوي العمود `_sample_factor` على معاملات نسبية تُحتسَب ديناميكيًا. ويُنشأ هذا العمود تلقائيًا عند [إنشاء](/ar/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table) جدول باستخدام مفتاح أخذ العينات المحدد. وترد أدناه أمثلة استخدام العمود `_sample_factor`.

لننظر إلى الجدول `visits`، الذي يحتوي على إحصاءات زيارات الموقع. يوضح المثال الأول كيفية حساب عدد مشاهدات الصفحة:

```sql theme={null}
SELECT sum(PageViews * _sample_factor)
FROM visits
SAMPLE 10000000
```

يوضح المثال التالي كيفية حساب إجمالي عدد الزيارات:

```sql theme={null}
SELECT sum(_sample_factor)
FROM visits
SAMPLE 10000000
```

يوضح المثال أدناه كيفية حساب متوسط مدة الجلسة. لاحظ أنك لا تحتاج إلى استخدام المعامل النسبي لحساب المتوسط.

```sql theme={null}
SELECT avg(Duration)
FROM visits
SAMPLE 10000000
```

<div id="sample-k-offset-m">
  ## SAMPLE K OFFSET M
</div>

هنا `k` و`m` عددان من 0 إلى 1. وفيما يلي أمثلة.

**مثال 1**

```sql theme={null}
SAMPLE 1/10
```

في هذا المثال، تمثل العينة عُشر جميع البيانات:

`[++------------]`

**مثال 2**

```sql theme={null}
SAMPLE 1/10 OFFSET 1/2
```

هنا، تُؤخذ عيّنة بنسبة 10% من النصف الثاني من البيانات.

`[------++------]`
