> ## 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/ru/reference/data-types/string)) — Активная часть данных, которой принадлежит столбец.
* `column` ([String](/docs/ru/reference/data-types/string)) — Имя столбца.
* `substream` ([String](/docs/ru/reference/data-types/string)) — Физический поток столбца, для которого приводится число блоков. Соответствует `system.parts_columns.substreams`.
* `data_compressed_bytes` ([Nullable(UInt64)](/docs/ru/reference/data-types/nullable)) — Размер сжатых данных в подпотоке в байтах. `NULL` для частей `Compact`.
* `data_uncompressed_bytes` ([Nullable(UInt64)](/docs/ru/reference/data-types/nullable)) — Размер несжатых данных в подпотоке в байтах. `NULL` для частей `Compact`.
* `codec_block_counts` ([Map(String, UInt64)](/docs/ru/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/ru/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}          │
└───────────┴────────────────────┘
```
