This page provides comprehensive support matrices for ClickHouse’s data lake integrations. It covers the features available for each open table format, the catalogs ClickHouse can connect to, and the capabilities supported by each catalog.
Support is shown separately for ClickHouse Cloud and self-managed ClickHouse. Experimental features are disabled by default in ClickHouse Cloud and must be requested through Support. Availability is feature-dependent, so contact Support to confirm whether a specific experimental feature can be enabled. Deployment-specific configuration and limitations are described in the Notes column.
Open table format support
ClickHouse integrates with four open table formats: Apache Iceberg, Delta Lake, Apache Hudi, and Apache Paimon. Select a format below to view its support matrix.
Legend: ✅ Supported | ⚠️ Partial, experimental, or deprecated | ❌ Not supported
| Feature | ClickHouse Cloud | Self-managed | Notes |
|---|---|---|---|
| Storage backends | |||
| AWS S3 | ✅ | ✅ | Via icebergS3() or iceberg() alias |
| GCS | ✅ | ✅ | Via icebergS3() or iceberg() alias |
| Azure Blob Storage | ✅ | ✅ | Via icebergAzure() |
| HDFS | ❌ | ⚠️ Deprecated | Via icebergHDFS() |
| Local filesystem | ❌ | ✅ | Via icebergLocal() |
| Access methods | |||
| Table function | ✅ | ✅ | icebergS3() with variants per backend |
| Table engine | ✅ | ✅ | IcebergS3 with variants per backend |
| Cluster-distributed reads | ✅ | ✅ | icebergS3Cluster, icebergAzureCluster, icebergHDFSCluster |
| Named collections | ⚠️ | ✅ | DDL-created named collections can be enabled on select ClickHouse Cloud services. Contact Support to confirm availability. |
| Read features | |||
| Read support | ✅ | ✅ | Full SELECT support with all ClickHouse SQL functions |
| Partition pruning | ✅ | ✅ | See Partition pruning. |
| Hidden partitioning | ✅ | ✅ | Iceberg transform-based partitioning supported |
| Partition evolution | ✅ | ✅ | Reading tables with changing partition specs over time supported |
| Schema evolution | ✅ | ✅ | Column addition, removal, and reordering. See Schema evolution. |
| Type promotion / widening | ✅ | ✅ | int → long, float → double, decimal(P,S) → decimal(P',S) where P’ > P. See Schema evolution. |
| Time travel / snapshots | ✅ | ✅ | Via iceberg_timestamp_ms or iceberg_snapshot_id settings. See Time travel. |
| Position deletes | ✅ | ✅ | See Processing deleted rows. |
| Equality deletes | ✅ | ✅ | Table functions and table engines, from v25.8+. See Processing deleted rows. |
| Merge-on-read | ⚠️ | ⚠️ | Experimental. Supported for delete operations. |
| Format versions | ⚠️ Partial | ⚠️ Partial | v1 and v2 are supported. V3 support is partial; deletion vectors and manifest compaction aren’t supported. |
| Column statistics | ✅ | ✅ | |
| Bloom filters / puffin files | ❌ | ❌ | Bloom filter indexes in Puffin files aren’t supported |
| Virtual columns | ✅ | ✅ | _path, _file, _size, _time, _etag. See Virtual columns. |
| Write features | |||
| Table creation | ⚠️ | ⚠️ | Experimental. Requires allow_insert_into_iceberg = 1. From v25.7+. See Creating a table. |
INSERT |
✅ Beta | ✅ Beta | Beta from 26.2. Requires allow_insert_into_iceberg = 1. See Inserting data. |
DELETE |
⚠️ | ⚠️ | Experimental. Requires allow_insert_into_iceberg = 1. Via ALTER TABLE ... DELETE WHERE. See Deleting data. |
ALTER TABLE (schema changes) |
⚠️ | ⚠️ | Experimental. Requires allow_insert_into_iceberg = 1. Add, drop, modify, rename columns. See Schema evolution. |
| Compaction | ⚠️ | ⚠️ | Experimental. Requires allow_experimental_iceberg_compaction = 1. See Compaction. |
UPDATE / MERGE |
❌ | ❌ | Not supported. See Compaction. |
| Copy-on-write | ❌ | ❌ | Not supported |
| Expire snapshots | ⚠️ | ⚠️ | Experimental. Requires Iceberg v2, allow_insert_into_iceberg = 1, and allow_experimental_expire_snapshots = 1. See Expire snapshots. |
| Remove orphan files | ⚠️ | ⚠️ | Experimental. Requires Iceberg v2 or higher, allow_insert_into_iceberg = 1, and allow_iceberg_remove_orphan_files = 1. See Remove orphan files. |
| Writing partitions | ✅ Beta | ✅ Beta | Supported for Iceberg writes. |
| Altering partitions | ❌ | ❌ | Changing the partitioning scheme from ClickHouse isn’t supported. ClickHouse can write to Iceberg tables with an evolved partitioning scheme. |
| Metadata | |||
| Branching and tagging | ❌ | ❌ | Iceberg branch/tag references aren’t supported |
| Metadata file resolution | ✅ | ✅ | Supports resolution through catalogs, directory listing, version-hint, and a specific path. See Metadata file resolution. |
| Data caching | ✅ | ✅ | Same mechanism as S3/Azure/HDFS storage engines. See Data cache. |
| Metadata caching | ✅ | ✅ | Enabled by default via use_iceberg_metadata_files_cache. See Metadata cache. |
From version 25.6, ClickHouse reads Delta Lake tables using the Delta Lake Rust kernel, providing broader feature support; however, known issues occur when accessing data in Azure Blob Storage. For this reason the Kernel is disabled when reading data on Azure Blob Storage. We indicate below which features require this kernel.
| Feature | ClickHouse Cloud | Self-managed | Notes |
|---|---|---|---|
| Storage backends | |||
| AWS S3 | ✅ | ✅ | Via deltaLake() or deltaLakeS3() |
| GCS | ✅ | ✅ | Via deltaLake() or deltaLakeS3() |
| Azure Blob Storage | ✅ | ✅ | Via deltaLakeAzure() |
| HDFS | ❌ | ❌ | Not supported |
| Local filesystem | ❌ | ✅ | Via deltaLakeLocal() |
| Access methods | |||
| Table function | ✅ | ✅ | deltaLake() with variants per backend |
| Table engine | ✅ | ✅ | DeltaLake |
| Cluster-distributed reads | ✅ | ✅ | deltaLakeCluster, deltaLakeAzureCluster |
| Named collections | ⚠️ | ✅ | DDL-created named collections can be enabled on select ClickHouse Cloud services. Contact Support to confirm availability. |
| Read features | |||
| Read support | ✅ | ✅ | Full SELECT support with all ClickHouse SQL functions |
| Partition pruning | ✅ Beta | ✅ Beta | Requires the Delta Kernel. |
| Schema evolution | ✅ Beta | ✅ Beta | Requires the Delta Kernel. |
| Time travel | ✅ Beta | ✅ Beta | Requires the Delta Kernel. |
| Deletion vectors | ✅ | ✅ | |
| Column mapping | ✅ | ✅ | |
| Change data feed | ✅ Beta | ✅ Beta | Requires the Delta Kernel. |
| Virtual columns | ✅ | ✅ | _path, _file, _size, _time, _etag. See Virtual columns. |
| Write features | |||
INSERT |
✅ Beta | ✅ Beta | Requires the Delta Kernel. Writes are supported for S3 and GCS; Azure writes aren’t supported. Requires allow_delta_lake_writes = 1 from v26.7; on earlier versions, use allow_experimental_delta_lake_writes = 1. See Delta Lake writes. |
DELETE / UPDATE / MERGE |
❌ | ❌ | Not supported |
| Create empty table | ❌ | ❌ | The CREATE TABLE operation assumes that the Delta Lake table already exists on object storage. |
| Caching | |||
| Data caching | ✅ | ✅ | Same mechanism as S3/Azure/HDFS storage engines. See Data cache. |
| Feature | ClickHouse Cloud | Self-managed | Notes |
|---|---|---|---|
| Storage backends | |||
| AWS S3 | ✅ | ✅ | Via hudi() |
| GCS | ✅ | ✅ | Via hudi() |
| Azure Blob Storage | ❌ | ❌ | Not supported |
| HDFS | ❌ | ❌ | Not supported |
| Local filesystem | ❌ | ❌ | Not supported |
| Access methods | |||
| Table function | ✅ | ✅ | hudi() |
| Table engine | ✅ | ✅ | Hudi |
| Cluster-distributed reads | ✅ | ✅ | hudiCluster (S3 only) |
| Named collections | ⚠️ | ✅ | DDL-created named collections can be enabled on select ClickHouse Cloud services. Contact Support to confirm availability. |
| Read features | |||
| Read support | ✅ | ✅ | Full SELECT support with all ClickHouse SQL functions |
| Schema evolution | ❌ | ❌ | Not supported |
| Time travel | ❌ | ❌ | Not supported |
| Virtual columns | ✅ | ✅ | _path, _file, _size, _time, _etag. See Virtual columns. |
| Write features | |||
INSERT / DELETE / UPDATE |
❌ | ❌ | Read-only integration |
| Caching | |||
| Data caching | ❌ | ❌ | Not supported |
| Feature | ClickHouse Cloud | Self-managed | Notes |
|---|---|---|---|
| Storage backends | |||
| S3 | ⚠️ | ⚠️ | Experimental. Via paimon() or paimonS3() |
| GCS | ⚠️ | ⚠️ | Experimental. Via paimon() or paimonS3() |
| Azure Blob Storage | ⚠️ | ⚠️ | Experimental. Via paimonAzure() |
| HDFS | ❌ | ⚠️ | Experimental and deprecated. Via paimonHDFS() |
| Local filesystem | ❌ | ⚠️ | Experimental. Via paimonLocal() |
| Access methods | |||
| Table function | ⚠️ | ⚠️ | Experimental. paimon() with variants per backend |
| Table engine | ⚠️ | ⚠️ | Experimental. Paimon with variants per backend. Requires allow_experimental_paimon_storage_engine = 1. |
| Cluster-distributed reads | ⚠️ | ⚠️ | Experimental. paimonS3Cluster, paimonAzureCluster, paimonHDFSCluster |
| Named collections | ⚠️ | ⚠️ | Experimental. DDL-created named collections can be enabled on select ClickHouse Cloud services. Contact Support to confirm availability. |
| Read features | |||
| Read support | ⚠️ | ⚠️ | Experimental. Full SELECT support with all ClickHouse SQL functions |
| Schema evolution | ❌ | ❌ | Not supported |
| Time travel | ❌ | ❌ | Not supported |
| Virtual columns | ⚠️ | ⚠️ | Experimental. _path, _file, _size, _time, _etag. See Virtual columns. |
| Write features | |||
INSERT / DELETE / UPDATE |
❌ | ❌ | Read-only integration |
| Caching | |||
| Data caching | ❌ | ❌ | Not supported |
Catalog support
ClickHouse can connect to external data catalogs using the DataLakeCatalog database engine, which exposes the catalog as a ClickHouse database. Tables registered in the catalog appear automatically and can be queried with standard SQL.
The following catalogs are currently supported. Refer to each catalog’s reference guide for full setup instructions.
| Catalog | Formats | Read | Create table | INSERT | Reference guide |
|---|---|---|---|---|---|
| AWS Glue Catalog | Iceberg | ✅ Beta | ❌ | ❌ | Glue catalog guide |
| BigLake Metastore | Iceberg | ✅ Beta | ❌ | ❌ | BigLake Metastore guide |
| Databricks Unity Catalog | Delta, Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | Unity Catalog guide |
| Iceberg REST | Iceberg | ✅ Beta | ❌ | ❌ | REST catalog guide |
| Lakekeeper | Iceberg | ✅ Beta | ❌ | ❌ | Lakekeeper catalog guide |
| Project Nessie | Iceberg | ✅ Experimental | ❌ | ❌ | Nessie catalog guide |
| Microsoft OneLake | Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | OneLake catalog guide |
| SeaweedFS | Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | SeaweedFS catalog guide |
All catalog integrations currently require an experimental or beta setting to be enabled. With the exception of Microsoft OneLake, Databricks Unity Catalog, and SeaweedFS, all catalogs expose read-only access — tables can be queried but not created or written to through the catalog connection. To load data from a catalog into ClickHouse for faster analytics, use INSERT INTO SELECT as described in the accelerating analytics guide. To write data back to open table formats, create standalone Iceberg tables as described in the writing data guide.