> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> يعرض عدد الكتل المضغوطة التي تستخدم كل برنامج الترميز لكل (جزء، عمود، تدفق فرعي) في جدول MergeTree.

# mergeTreeCodecBlockCounts

يعرض، لكل (جزء أو عمود أو تدفق فرعي) في جدول MergeTree، عدد الكتل المضغوطة التي تستخدم كل برنامج الترميز. يتيح لك ذلك مراقبة اختيار برنامج الترميز التكيفي (المفعّل عبر الإعداد `allow_experimental_adaptive_codec_selection`)، الذي يمكنه اختيار برنامج الترميز لكل كتلة في الأعمدة ذات برنامج الترميز الافتراضي.

يؤدي اختيار `codec_block_counts` إلى قراءة ملفات البيانات `.bin`، وليس البيانات الوصفية فقط. أما الأعمدة الأخرى فتقتصر على البيانات الوصفية.

لا تُدرج الأجزاء التي لا تسجّل تدفقاتها الفرعية في `columns_substreams.txt`.

إذا انطبقت سياسة صفوف على الجدول بالنسبة إلى المستخدم الحالي، فإن قراءة `codec_block_counts` تطرح `ACCESS_DENIED`، لأن الأعداد ستشمل الصفوف التي تخفيها السياسة. تظل الأعمدة الأخرى قابلة للقراءة، ويعرض `system.parts_columns` تلك الأعمدة بغض النظر عن سياسات الصفوف.

<div id="syntax">
  ## الصياغة
</div>

```sql theme={null}
mergeTreeCodecBlockCounts(database, table)
```

<div id="arguments">
  ## الوسيطات
</div>

| الوسيطة    | الوصف                                     |
| ---------- | ----------------------------------------- |
| `database` | اسم قاعدة البيانات التي يوجد فيها الجدول. |
| `table`    | اسم جدول MergeTree.                       |

<div id="returned-value">
  ## القيمة المُعادة
</div>

كائن جدول يحتوي على صف واحد لكل مجموعة من (الجزء النشط والعمود والتدفق الفرعي) في الجدول المصدر:

* `part_name` ([String](/docs/ar/reference/data-types/string)) — جزء البيانات النشط الذي ينتمي إليه العمود.
* `column` ([String](/docs/ar/reference/data-types/string)) — اسم العمود.
* `substream` ([String](/docs/ar/reference/data-types/string)) — التدفق الفعلي للعمود الذي تتعلق به الأعداد. يطابق `system.parts_columns.substreams`.
* `data_compressed_bytes` ([Nullable(UInt64)](/docs/ar/reference/data-types/nullable)) — حجم البيانات المضغوطة في التدفق الفرعي، بالبايت. تكون `NULL` لأجزاء `Compact`.
* `data_uncompressed_bytes` ([Nullable(UInt64)](/docs/ar/reference/data-types/nullable)) — حجم البيانات غير المضغوطة في التدفق الفرعي، بالبايت. تكون `NULL` لأجزاء `Compact`.
* `codec_block_counts` ([Map(String, UInt64)](/docs/ar/reference/data-types/map)) — عدد الكتل المضغوطة في هذا التدفق الفرعي، مجمّعة حسب برنامج الترميز. تكون فارغة لأجزاء `Compact`، إذ تشترك أعمدتها في ملف بيانات واحد، ولذلك لا يمكن إسناد برنامج ترميز إلى كل تدفق على حدة.

<div id="usage-example">
  ## مثال للاستخدام
</div>

```sql theme={null}
CREATE TABLE mt (a UInt64) ENGINE = MergeTree ORDER BY a
SETTINGS min_bytes_for_wide_part = 0;

INSERT INTO mt SELECT number FROM numbers(100000);

SELECT column, substream, codec_block_counts
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt);
```

```text theme={null}
┌─column─┬─substream─┬─codec_block_counts─┐
│ a      │ a         │ {'LZ4':13}         │
└────────┴───────────┴────────────────────┘
```

إجماليات مستوى العمود هي `GROUP BY column` مع [`sumMap`](/docs/ar/reference/functions/aggregate-functions/sumMap):

```sql theme={null}
SELECT column, sumMap(codec_block_counts)
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt)
GROUP BY column;
```

يعرض العمود `LowCardinality` تدفّقات القاموس والفهارس كلًّا على حدة:

```sql theme={null}
CREATE TABLE mt_lc (s LowCardinality(String)) ENGINE = MergeTree ORDER BY tuple()
SETTINGS min_bytes_for_wide_part = 0;

INSERT INTO mt_lc SELECT toString(number % 1000) FROM numbers(1000000);

SELECT substream, codec_block_counts
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt_lc)
WHERE column = 's'
ORDER BY substream;
```

```text theme={null}
┌─substream─┬─codec_block_counts─┐
│ s         │ {'LZ4':31}         │
│ s.dict    │ {'LZ4':1}          │
└───────────┴────────────────────┘
```
