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

> クエリ実行中に `MergeTree` の読み取りパイプラインから収集された、フィルタ および索引の選択性に関するサンプル統計を含むシステムテーブル。

# system.predicate_statistics_log

<Info>
  **ClickHouse Cloud でのクエリ**

  このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに保持されています。したがって、すべてのデータを完全に把握するには、`clusterAllReplicas` 関数を使用する必要があります。詳細については、[こちら](/ja/reference/system-tables/overview#system-tables-in-clickhouse-cloud)を参照してください。
</Info>

<div id="description">
  ## 説明
</div>

`MergeTree` テーブルの読み取り時に収集された、サンプルベースの選択性統計が含まれます。このテーブルにデータが格納されるのは、[`predicate_statistics_sample_rate`](/ja/reference/settings/session-settings#predicate_statistics_sample_rate) が `0` より大きい場合のみです。

このテーブルを使用すると、実際のワークロードにおいてユーザー述語がどの程度の選択性を持つか、またプライマリキーまたはスキップ索引によるフィルタリング後にどれだけのグラニュールが残るかを確認できます。このデータは、ワークロードに基づく索引およびプロジェクションの推奨を行うための入力として利用されます。

<div id="row-shapes">
  ## 行の構造
</div>

1 つのクエリは、`system.predicate_statistics_log` に 2 種類の行を生成できます。

* **フィルタ行**: `MergeTreeSelectProcessor` の各 prewhere/filter ステップごとに出力されます。`predicate_expression`、`input_rows`、`passed_rows`、`filter_selectivity`、および述語全体に関するカラム `total_input_rows`、`total_passed_rows`、`total_selectivity` が設定されます。索引関連のカラムは空です。
* **索引行**: `ReadFromMergeTree` の各読み取りステップごとに出力されます。`index_names`、`index_types`、`total_granules`、`granules_after`、`index_selectivities` の各配列が設定され、各索引ステージ (主キー、パーティション、スキップ索引) ごとに 1 つのエントリが入ります。述語関連のカラムは空です。

同じクエリのフィルタ行と索引行は同じ `query_id` と `table` を共有するため、両方が必要な場合は結合できます。

<div id="sampling-and-overhead">
  ## サンプリングとオーバーヘッド
</div>

サンプリングは [`predicate_statistics_sample_rate`](/ja/reference/settings/session-settings#predicate_statistics_sample_rate) で制御されます。

* `0` は収集を無効にします。
* `1` はすべてのクエリをサンプリングします。
* `N > 1` の場合、`query_id` をハッシュ化してクエリのおよそ `1 / N` をサンプリングします。

値を小さくすると生成されるデータは増えますが、その分、読み取りパスでの CPU 負荷とシステムログへの書き込みも増えます。設定を有効にしたあと、行をすぐに反映させる必要がある場合は [`SYSTEM FLUSH LOGS`](/ja/reference/statements/system#flush-logs) を使用してください。

<div id="columns">
  ## カラム
</div>

* `hostname` ([LowCardinality(String)](/ja/reference/data-types/lowcardinality)) — クエリを実行しているサーバーのホスト名。
* `event_date` ([Date](/ja/reference/data-types/date)) — イベント日。
* `event_time` ([DateTime](/ja/reference/data-types/datetime)) — このログエントリが書き込まれた時点のタイムスタンプ。
* `database` ([LowCardinality(String)](/ja/reference/data-types/lowcardinality)) — ターゲットテーブルのデータベース名。
* `table` ([LowCardinality(String)](/ja/reference/data-types/lowcardinality)) — ターゲットテーブルのテーブル名。
* `query_id` ([String](/ja/reference/data-types/string)) — query\_log と関連付けるためのクエリ ID。
* `predicate_expression` ([String](/ja/reference/data-types/string)) — この prewhere/filter ステップで処理されるフィルタ式全体 (ActionsDAG ダンプ) 。
* `input_rows` ([UInt64](/ja/reference/data-types/int-uint)) — この prewhere/filter ステップに入力される行数。
* `passed_rows` ([UInt64](/ja/reference/data-types/int-uint)) — この prewhere/filter ステップを通過した行数。
* `filter_selectivity` ([Float64](/ja/reference/data-types/float)) — このステップの選択性: passed\_rows / input\_rows。
* `total_input_rows` ([UInt64](/ja/reference/data-types/int-uint)) — 最初の prewhere ステップに入力される行数 (グラニュールから読み取られた総行数) 。
* `total_passed_rows` ([UInt64](/ja/reference/data-types/int-uint)) — すべての prewhere ステップを通過した行数 (クエリに渡される行数) 。
* `total_selectivity` ([Float64](/ja/reference/data-types/float)) — 述語全体の選択性: total\_passed\_rows / total\_input\_rows。
* `index_names` ([Array(LowCardinality(String))](/ja/reference/data-types/array)) — 適用された索引の名前 (例: \['PrimaryKey', 'idx\_bf\_status'])  (索引行のみ) 。
* `index_types` ([Array(LowCardinality(String))](/ja/reference/data-types/array)) — 適用された索引の種類: PrimaryKey, Skip, MinMax, Partition (索引行のみ) 。
* `total_granules` ([Array(UInt64)](/ja/reference/data-types/array)) — 各索引ステージに入力されるグラニュール数 (索引行のみ) 。
* `granules_after` ([Array(UInt64)](/ja/reference/data-types/array)) — 各索引ステージの後に残るグラニュール数 (索引行のみ) 。
* `index_selectivities` ([Array(Float64)](/ja/reference/data-types/array)) — 索引ごとの選択性: granules\_after / total\_granules (索引行のみ) 。

<div id="example">
  ## 例
</div>

```sql theme={null}
SET predicate_statistics_sample_rate = 1;

SELECT *
FROM hits
WHERE URL LIKE '%/product/%' AND EventDate >= today() - 7
FORMAT Null;

SYSTEM FLUSH LOGS predicate_statistics_log;

SELECT
    query_id,
    predicate_expression,
    round(filter_selectivity, 3) AS step_selectivity,
    round(total_selectivity, 3) AS query_selectivity,
    index_names,
    index_selectivities
FROM system.predicate_statistics_log
WHERE table = 'hits'
ORDER BY event_time DESC
LIMIT 10;
```

<div id="see-also">
  ## 関連項目
</div>

* [`predicate_statistics_sample_rate`](/ja/reference/settings/session-settings#predicate_statistics_sample_rate)
* [system.query\_log](/ja/reference/system-tables/query_log)
