system.iceberg_metadata_log
system.iceberg_metadata_log テーブルは、ClickHouse が読み取り対象とする Iceberg テーブルに対するメタデータのアクセスおよび解析イベントを記録します。処理された各メタデータファイルやエントリに関する詳細情報を提供し、デバッグや監査、Iceberg テーブル構造の変遷を把握する際に有用です。
目的
このテーブルは、Iceberg テーブルから読み取ったすべてのメタデータファイルおよびエントリ(ルートメタデータファイル、マニフェストリスト、マニフェストエントリを含む)を記録します。これにより、ClickHouse が Iceberg テーブルのメタデータをどのように解釈しているかを追跡し、スキーマの進化、ファイルの解決、クエリプランニングに関連する問題の診断に役立ちます。
注記
このテーブルは主にデバッグ目的で使用されます。
列
| Name | Type | Description |
|---|---|---|
event_date | Date | ログエントリの日付。 |
event_time | DateTime | イベントのタイムスタンプ。 |
query_id | String | メタデータの読み取りをトリガーしたクエリ ID。 |
content_type | Enum8 | メタデータコンテンツの種類(下記参照)。 |
table_path | String | Iceberg テーブルへのパス。 |
file_path | String | ルートメタデータ JSON ファイル、Avro マニフェストリスト、またはマニフェストファイルへのパス。 |
content | String | JSON 形式のコンテンツ(.json からの生メタデータ、Avro メタデータ、または Avro エントリ)。 |
row_in_file | Nullable(UInt64) | ファイル内の行番号(該当する場合)。ManifestListEntry および ManifestFileEntry のコンテンツタイプに対してのみ設定されます。 |
content_type の値
None: コンテンツなし。Metadata: ルートメタデータファイル。ManifestListMetadata: マニフェストリストのメタデータ。ManifestListEntry: マニフェストリスト内のエントリ。ManifestFileMetadata: マニフェストファイルのメタデータ。ManifestFileEntry: マニフェストファイル内のエントリ。
ClickHouse Cloud でのクエリ実行
このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに格納されています。そのため、すべてのデータを包括的に確認するには、clusterAllReplicas 関数を使用する必要があります。詳細についてはこちらを参照してください。
ログの詳細度の制御
iceberg_metadata_log_level 設定を使用して、どのメタデータイベントをログに出力するかを制御できます。
現在のクエリで使用されるすべてのメタデータをログに出力するには:
現在のクエリで使用されるルートメタデータ JSON ファイルだけをログに記録するには:
iceberg_metadata_log_level 設定の説明に、より詳しい情報があります。
補足事項
- Iceberg テーブルを詳細に調査する必要がある場合にのみ、クエリ単位で
iceberg_metadata_log_levelを使用してください。そうしないと、ログテーブルに不要なメタデータが大量に蓄積され、パフォーマンス低下を招く可能性があります。 - このテーブルは主にデバッグ目的であり、エンティティごとの一意性は保証されないため、重複したエントリが含まれている場合があります。
ManifestListMetadataより冗長なcontent_typeを使用すると、マニフェストリストに対する Iceberg メタデータキャッシュは無効化されます。- 同様に、
ManifestFileMetadataより冗長なcontent_typeを使用すると、マニフェストファイルに対する Iceberg メタデータキャッシュは無効化されます。