メインコンテンツへスキップ
メインコンテンツへスキップ

system.iceberg_metadata_log

system.iceberg_metadata_log テーブルは、ClickHouse が読み取り対象とする Iceberg テーブルに対するメタデータのアクセスおよび解析イベントを記録します。処理された各メタデータファイルやエントリに関する詳細情報を提供し、デバッグや監査、Iceberg テーブル構造の変遷を把握する際に有用です。

目的

このテーブルは、Iceberg テーブルから読み取ったすべてのメタデータファイルおよびエントリ(ルートメタデータファイル、マニフェストリスト、マニフェストエントリを含む)を記録します。これにより、ClickHouse が Iceberg テーブルのメタデータをどのように解釈しているかを追跡し、スキーマの進化、ファイルの解決、クエリプランニングに関連する問題の診断に役立ちます。

注記

このテーブルは主にデバッグ目的で使用されます。

NameTypeDescription
event_dateDateログエントリの日付。
event_timeDateTimeイベントのタイムスタンプ。
query_idStringメタデータの読み取りをトリガーしたクエリ ID。
content_typeEnum8メタデータコンテンツの種類(下記参照)。
table_pathStringIceberg テーブルへのパス。
file_pathStringルートメタデータ JSON ファイル、Avro マニフェストリスト、またはマニフェストファイルへのパス。
contentStringJSON 形式のコンテンツ(.json からの生メタデータ、Avro メタデータ、または Avro エントリ)。
row_in_fileNullable(UInt64)ファイル内の行番号(該当する場合)。ManifestListEntry および ManifestFileEntry のコンテンツタイプに対してのみ設定されます。

content_type の値

  • None: コンテンツなし。
  • Metadata: ルートメタデータファイル。
  • ManifestListMetadata: マニフェストリストのメタデータ。
  • ManifestListEntry: マニフェストリスト内のエントリ。
  • ManifestFileMetadata: マニフェストファイルのメタデータ。
  • ManifestFileEntry: マニフェストファイル内のエントリ。
ClickHouse Cloud でのクエリ実行

このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに格納されています。そのため、すべてのデータを包括的に確認するには、clusterAllReplicas 関数を使用する必要があります。詳細についてはこちらを参照してください。

ログの詳細度の制御

iceberg_metadata_log_level 設定を使用して、どのメタデータイベントをログに出力するかを制御できます。

現在のクエリで使用されるすべてのメタデータをログに出力するには:

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 ファイルだけをログに記録するには:

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 設定の説明に、より詳しい情報があります。

補足事項

  • Iceberg テーブルを詳細に調査する必要がある場合にのみ、クエリ単位で iceberg_metadata_log_level を使用してください。そうしないと、ログテーブルに不要なメタデータが大量に蓄積され、パフォーマンス低下を招く可能性があります。
  • このテーブルは主にデバッグ目的であり、エンティティごとの一意性は保証されないため、重複したエントリが含まれている場合があります。
  • ManifestListMetadata より冗長な content_type を使用すると、マニフェストリストに対する Iceberg メタデータキャッシュは無効化されます。
  • 同様に、ManifestFileMetadata より冗長な content_type を使用すると、マニフェストファイルに対する Iceberg メタデータキャッシュは無効化されます。

関連項目