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

> Indique, pour chaque (partie, colonne, sous-flux) d’une table MergeTree, le nombre de blocs compressés utilisant chaque codec.

# mergeTreeCodecBlockCounts

Indique, pour chaque combinaison (partie, colonne, sous-flux) d’une table MergeTree, combien de blocs compressés utilisent chaque codec. Cela permet d’observer la sélection adaptative de codec (activée par le paramètre `allow_experimental_adaptive_codec_selection`), qui peut choisir un codec par bloc pour les colonnes utilisant le codec par défaut.

La sélection de `codec_block_counts` lit les fichiers de données `.bin`, et non uniquement les métadonnées. Les autres colonnes ne contiennent que des métadonnées.

Les parties qui n’enregistrent pas leurs sous-flux dans `columns_substreams.txt` ne sont pas répertoriées.

Si une politique de lignes s’applique à la table pour l’utilisateur courant, la lecture de `codec_block_counts` génère `ACCESS_DENIED`, car les décomptes incluraient des lignes masquées par la politique. Les autres colonnes restent lisibles ; `system.parts_columns` les indique indépendamment des politiques de lignes.

<div id="syntax">
  ## Syntaxe
</div>

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

<div id="arguments">
  ## Arguments
</div>

| Argument   | Description                               |
| ---------- | ----------------------------------------- |
| `database` | Le nom de la base de données de la table. |
| `table`    | Le nom de la table MergeTree.             |

<div id="returned-value">
  ## Valeur renvoyée
</div>

Un objet table comportant une ligne par (partie active, colonne, sous-flux) de la table source :

* `part_name` ([String](/docs/fr/reference/data-types/string)) — La partie de données active à laquelle appartient la colonne.
* `column` ([String](/docs/fr/reference/data-types/string)) — Le nom de la colonne.
* `substream` ([String](/docs/fr/reference/data-types/string)) — Le flux physique de la colonne auquel se rapportent les décomptes. Correspond à `system.parts_columns.substreams`.
* `data_compressed_bytes` ([Nullable(UInt64)](/docs/fr/reference/data-types/nullable)) — Taille des données compressées du sous-flux, en octets. `NULL` pour les parties `Compact`.
* `data_uncompressed_bytes` ([Nullable(UInt64)](/docs/fr/reference/data-types/nullable)) — Taille des données non compressées du sous-flux, en octets. `NULL` pour les parties `Compact`.
* `codec_block_counts` ([Map(String, UInt64)](/docs/fr/reference/data-types/map)) — Nombre de blocs compressés de ce sous-flux, regroupés par codec. Vide pour les parties `Compact`, dont les colonnes partagent un même fichier de données et ne disposent donc pas d’une attribution de codec par flux.

<div id="usage-example">
  ## Exemple d'utilisation
</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}         │
└────────┴───────────┴────────────────────┘
```

Les totaux par colonne s’obtiennent avec un `GROUP BY column` et [`sumMap`](/docs/fr/reference/functions/aggregate-functions/sumMap) :

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

Une colonne `LowCardinality` indique séparément les flux de son dictionnaire et de ses index :

```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}          │
└───────────┴────────────────────┘
```
