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

> MergeTree テーブルの各（パーツ、カラム、サブストリーム）について、各 codec を使用している圧縮ブロックの数をレポートします。

# mergeTreeCodecBlockCounts

MergeTree テーブルの (パーツ、カラム、サブストリーム) ごとに、各 codec を使用している圧縮ブロック数を報告します。これにより、デフォルト codec を使用するカラムではブロックごとに codec を選択できる、`enable_adaptive_codec_selection` 設定で有効になる適応型 codec 選択を確認できます。

`codec_block_counts` を選択すると、メタデータだけでなく `.bin` データファイルも読み取ります。ほかのカラムはメタデータのみを読み取ります。

サブストリームを `columns_substreams.txt` に記録しないパーツは一覧に表示されません。

報告されるすべての値はテーブル'のデータから導出されるため、結果の任意のカラムを読み取るには、テーブルのすべてのカラムに対する `SELECT` 権限が必要です。一部のカラムのみを対象とする権限付与では不十分です。この権限は、たとえば `DESCRIBE` によって関数の構造を解決する際にも必要です。テーブルをまったく表示できない、つまりそのテーブルに対する `SHOW TABLES` 権限を持たないユーザーには、テーブルが存在するかどうかにかかわらず `ACCESS_DENIED` が返されるため、この関数はそのようなユーザーにどのテーブルが存在するかを知らせません。

現在のユーザーに対してテーブルに行ポリシーが適用されている場合、`codec_block_counts` を読み取ると `ACCESS_DENIED` がスローされます。カウントにはポリシーによって非表示となる行も含まれるためです。ほかのカラムは引き続き読み取ることができ、`system.parts_columns` は行ポリシーにかかわらずこれらを報告します。

## 構文

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

## 引数

| 引数 | 説明 |
| - | - |
| `database` | テーブルのデータベース名。 |
| `table` | MergeTree テーブルの名前。 |

## 戻り値

ログソーステーブルの (アクティブなパーツ、カラム、サブストリーム) ごとに1行を含むテーブルオブジェクト:

* `part_name` ([String](/ja/reference/data-types/string)) — カラムが属するアクティブなデータパーツ。
* `column` ([String](/ja/reference/data-types/string)) — カラム名。
* `substream` ([String](/ja/reference/data-types/string)) — カウント対象のカラムの物理ストリーム。`system.parts_columns.substreams` と一致します。
* `data_compressed_bytes` ([Nullable(UInt64)](/ja/reference/data-types/nullable)) — サブストリーム内の圧縮データのサイズ (バイト単位) 。`Compact` パーツでは `NULL`。
* `data_uncompressed_bytes` ([Nullable(UInt64)](/ja/reference/data-types/nullable)) — サブストリーム内の非圧縮データのサイズ (バイト単位) 。`Compact` パーツでは `NULL`。
* `codec_block_counts` ([Map(String, UInt64)](/ja/reference/data-types/map)) — codec ごとに集計した、このサブストリームの圧縮ブロック数。カラムが1つのデータファイルを共有するためストリームごとの codec 割り当てがない `Compact` パーツでは空です。

## 使用例

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

カラムレベルのtotalsは、[`sumMap`](/ja/reference/functions/aggregate-functions/sumMap) を使用する `GROUP BY column` です。

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

`LowCardinality` カラムでは、Dictionary と索引のストリームがそれぞれ個別に報告されます。

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