Icebergテーブルエンジン
ClickHouseでIcebergデータを操作するためには、Icebergテーブル関数の使用をお勧めします。Icebergテーブル関数は現在、Icebergテーブルの部分的な読み取り専用インターフェースを提供する十分な機能を持っています。
Icebergテーブルエンジンは利用可能ですが、制限がある場合があります。ClickHouseは元々、外部で変更されるスキーマを持つテーブルをサポートするようには設計されておらず、これがIcebergテーブルエンジンの機能に影響を及ぼす可能性があります。そのため、通常のテーブルで機能する一部の機能が利用できない場合や、特に古いアナライザーを使用する際に正しく機能しない場合があります。
最適な互換性を確保するために、Icebergテーブルエンジンのサポートを改善し続ける間は、Icebergテーブル関数の使用を推奨します。
このエンジンは、Amazon S3、Azure、HDFS、およびローカルに保存されたテーブル内の既存のApache Iceberg テーブルとの読み取り専用統合を提供します。
テーブルの作成
Icebergテーブルは既にストレージ内に存在している必要があります。このコマンドは新しいテーブルを作成するためのDDLパラメータを取りません。
エンジン引数
引数の説明は、エンジンS3
、AzureBlobStorage
、HDFS
、およびFile
の引数の説明と一致します。
format
は、Icebergテーブル内のデータファイルのフォーマットを示します。
エンジンパラメータは、Named Collectionsを使用して指定できます。
例
Named Collectionsを使用する場合:
エイリアス
テーブルエンジンIceberg
は現在、IcebergS3
のエイリアスです。
スキーマの進化 現在、CHの助けを借りて、時間の経過とともにスキーマが変更されたIcebergテーブルを読み取ることができます。現在、カラムが追加され、削除され、順序が変更されたテーブルの読み取りをサポートしています。値が必要なカラムをNULLが許可されるカラムに変更することもできます。また、単純な型に対して許可されている型変換をサポートしています。具体的には:
- int -> long
- float -> double
- decimal(P, S) -> decimal(P', S) ただし、P' > P
現在、ネストされた構造や配列およびマップ内の要素の型を変更することはできません。
作成時に動的スキーマ推論を使用してスキーマが変更されたテーブルを読み取るには、テーブル作成時に allow_dynamic_metadata_for_data_lakes = true
を設定します。
パーティションプルーニング
ClickHouseは、IcebergテーブルのSELECTクエリ中にパーティションプルーニングをサポートしています。これにより、関連しないデータファイルをスキップすることでクエリ性能が最適化されます。現在、アイデンティティ変換および時間ベースの変換(時間、日、月、年)のみで機能します。パーティションプルーニングを有効にするには、 use_iceberg_partition_pruning = 1
を設定します。
データキャッシュ
Iceberg
テーブルエンジンおよびテーブル関数は、S3
、AzureBlobStorage
、HDFS
ストレージと同様にデータキャッシュをサポートしています。詳細はこちらを参照してください。