> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 包含从 Iceberg 表读取的元数据文件相关信息的系统表。每个条目 表示根元数据文件、从 Avro 文件提取的元数据，或某个 Avro 文件中的一个条目。

# system.iceberg_metadata_log

<Info>
  **在 ClickHouse Cloud 中查询**

  此系统表中的数据分别保存在 ClickHouse Cloud 各节点的本地。因此，如需查看所有数据的完整情况，需要使用 `clusterAllReplicas` 函数。更多详情请参见[此处](/zh/reference/system-tables/overview#system-tables-in-clickhouse-cloud)。
</Info>

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

`system.iceberg_metadata_log` 表会记录 ClickHouse 读取 Iceberg 表时的元数据访问和解析事件。它提供有关每个已处理元数据文件或条目的详细信息，有助于调试、审计以及理解 Iceberg 表结构的演进过程。

该表会记录从 Iceberg 表读取的每个元数据文件和条目，包括根元数据文件、manifest 列表和 manifest 条目。它可帮助用户追踪 ClickHouse 如何解析 Iceberg 表元数据，并诊断与 schema 演进、文件定位或查询计划相关的问题。

<Note>
  该表主要用于调试。
</Note>

<div id="controlling-log-verbosity">
  ### 控制日志详细级别
</div>

你可以使用 [`iceberg_metadata_log_level`](/zh/reference/settings/session-settings#iceberg_metadata_log_level) 设置，控制哪些元数据事件会被记入日志。

要记录当前查询使用的全部元数据：

```sql theme={null}
SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'manifest_file_entry';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';
```

仅记录当前查询使用的根元数据 JSON 文件：

```sql theme={null}
SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'metadata';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';
```

有关更多信息，请参阅 [`iceberg_metadata_log_level`](/zh/reference/settings/session-settings#iceberg_metadata_log_level) 设置的说明。

<div id="good-to-know">
  ### 使用须知
</div>

* 仅当你需要对 Iceberg 表进行细致排查时，才在查询级别使用 `iceberg_metadata_log_level`。否则，日志表中可能会写入过多元数据，并导致性能下降。
* 该表包含重复条目，因为它主要用于调试，且不保证每个实体的唯一性。内容和裁剪状态分别存储在不同的行中，因为它们是在程序运行的不同时间点采集的。内容会在读取元数据时采集，裁剪状态会在检查元数据是否需要裁剪时采集。**切勿依赖该表本身进行去重。**
* 如果你使用的 `content_type` 比 `ManifestListMetadata` 更详细，则会为 manifest 列表禁用 Iceberg metadata cache。
* 同样，如果你使用的 `content_type` 比 `ManifestFileMetadata` 更详细，则会为 manifest 文件禁用 Iceberg metadata cache。
* 如果 SELECT 查询被取消或执行失败，日志表中仍可能包含失败前已处理元数据的条目，但不会包含尚未处理的元数据实体信息。

<div id="columns">
  ## 列
</div>

* `hostname` ([LowCardinality(String)](/zh/reference/data-types/lowcardinality)) — 执行查询的服务器主机名。
* `event_date` ([Date](/zh/reference/data-types/date)) — 记录日期。
* `event_time` ([DateTime](/zh/reference/data-types/datetime)) — 事件时间。
* `query_id` ([String](/zh/reference/data-types/string)) — 查询 ID。
* `content_type` ([Enum8('None' = 0, 'Metadata' = 1, 'ManifestListMetadata' = 2, 'ManifestListEntry' = 3, 'ManifestFileMetadata' = 4, 'ManifestFileEntry' = 5)](/zh/reference/data-types/enum)) — 内容类型。
* `table_path` ([String](/zh/reference/data-types/string)) — 表路径。
* `file_path` ([String](/zh/reference/data-types/string)) — 文件路径。
* `content` ([String](/zh/reference/data-types/string)) — JSON 格式的内容 (JSON 文件内容、Avro 元数据或 Avro 条目) 。
* `row_in_file` ([Nullable(UInt64)](/zh/reference/data-types/nullable)) — 文件中的行号。
* `pruning_status` ([Nullable(Enum8('NotPruned' = 0, 'PartitionPruned' = 1, 'MinMaxIndexPruned' = 2))](/zh/reference/data-types/nullable)) — 该文件的分区裁剪或 min-max 索引裁剪状态。

<div id="content-type-values">
  ### `content_type` 值
</div>

* `None`：无内容。
* `Metadata`：根元数据文件。
* `ManifestListMetadata`：manifest 列表元数据。
* `ManifestListEntry`：manifest 列表中的条目。
* `ManifestFileMetadata`：manifest 文件元数据。
* `ManifestFileEntry`：manifest 文件中的条目。

<div id="see-also">
  ## 另见
</div>

* [Iceberg 表引擎](/zh/reference/engines/table-engines/integrations/iceberg)
* [Iceberg 表函数](/zh/reference/functions/table-functions/iceberg)
* [system.iceberg\_history](/zh/reference/system-tables/iceberg_history)
