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

system.iceberg_metadata_log

ClickHouse Cloud でのクエリ実行

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

説明

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

このテーブルには、ルートメタデータファイル、マニフェストリスト、マニフェストエントリを含む、Iceberg テーブルから読み取られたすべてのメタデータファイルとエントリが記録されます。これにより、ClickHouse が Iceberg テーブルのメタデータをどのように解釈するかを追跡し、schema の変更、ファイルの解決、またはクエリ計画に関連する問題を診断できます。

注記

このテーブルは主にデバッグ目的で使用することを想定しています。

ログの詳細度を制御する

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_metadata_log_level は、Iceberg テーブルを詳細に調査する必要がある場合にのみ、クエリレベルで使用してください。そうしないと、ログテーブルが過剰なメタデータで埋まり、パフォーマンスが低下するおそれがあります。
  • このテーブルには重複したエントリが含まれます。これは主にデバッグを目的としたもので、エンティティごとの一意性は保証されないためです。内容と剪枝ステータスは、プログラム内の異なるタイミングで収集されるため、別々の行に格納されます。内容はメタデータの読み取り時に収集され、剪枝ステータスはメタデータが剪枝対象かどうかを確認する際に収集されます。重複排除のために、このテーブル自体に決して依存しないでください。
  • ManifestListMetadata よりも Verbose な content_type を使用すると、マニフェストリスト では Iceberg メタデータキャッシュが無効になります。
  • 同様に、ManifestFileMetadata よりも Verbose な content_type を使用すると、マニフェストファイル では Iceberg メタデータキャッシュが無効になります。
  • SELECT クエリがキャンセルされた場合や失敗した場合でも、失敗前に処理されたメタデータのエントリはログテーブルに残っている可能性がありますが、処理されなかったメタデータエンティティに関する情報は含まれません。

カラム

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 および ManifestFileEntrycontent_type で存在します。
pruning_statusNullable(Enum8)エントリの剪枝ステータス。'NotPruned'、'PartitionPruned'、'MinMaxIndexPruned'。パーティション剪枝は minmax 剪枝より前に行われるため、'PartitionPruned' は、そのエントリがパーティションフィルターによって剪枝され、minmax 剪枝は試行されていないことを意味します。ManifestFileEntrycontent_type で存在します。

content_type の値

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

関連項目