Data Lake

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/use-cases/data_lake/index.md)

ClickHouse integrates with open table formats, including [Apache Iceberg](/docs/engines/table-engines/integrations/iceberg), [Delta Lake](/docs/engines/table-engines/integrations/deltalake), [Apache Hudi](/docs/engines/table-engines/integrations/hudi), and [Apache Paimon](/docs/sql-reference/table-functions/paimon). This allows users to connect ClickHouse to data already stored in these formats across object storage, combining the analytical power of ClickHouse with their existing data lake infrastructure.

## Why use ClickHouse with open table formats?[​](#why-clickhouse-uses-lake-formats "Direct link to Why use ClickHouse with open table formats?")

### Query existing data in place[​](#querying-data-in-place "Direct link to Query existing data in place")

ClickHouse can query open table formats directly in object storage without duplicating data. Organizations standardized on Iceberg, Delta Lake, Hudi, or Paimon can point ClickHouse at existing tables and immediately use its SQL dialect, analytical functions, and efficient native Parquet reader. At the same time, tools like [clickhouse-local](/docs/operations/utilities/clickhouse-local) and [chDB](/docs/chdb) enable exploratory, ad hoc analysis across more than 70 file formats in remote storage, allowing users to interactively explore data lake datasets with no infrastructure setup.

Users can achieve this with either direct reading, using [table functions and table engines](/docs/use-cases/data-lake/getting-started/querying-directly), or by [connecting to a data catalogue](/docs/use-cases/data-lake/getting-started/connecting-catalogs).

### Real-time analytical workloads with ClickHouse[​](#real-time-with-clickhouse "Direct link to Real-time analytical workloads with ClickHouse")

For workloads that demand high concurrency and low-latency responses, users can load data from open table formats into ClickHouse's [MergeTree](/docs/engines/table-engines/mergetree-family/mergetree) engine. This provides a real-time analytics layer on top of data that originates in a data lake, supporting dashboards, operational reporting, and other latency-sensitive workloads that benefit from MergeTree columnar storage and indexing capabilities.

See the getting started guide for [accelerating analytics with MergeTree](/docs/use-cases/data-lake/getting-started/accelerating-analytics).

## Capabilities[​](#capabilities "Direct link to Capabilities")

### Read data directly[​](#read-data-directly "Direct link to Read data directly")

ClickHouse provides [table functions](/docs/sql-reference/table-functions) and [engines](/docs/engines/table-engines/integrations) for reading open table formats directly on object storage. Functions such as [`iceberg()`](/docs/sql-reference/table-functions/iceberg), [`deltaLake()`](/docs/sql-reference/table-functions/deltalake), [`hudi()`](/docs/sql-reference/table-functions/hudi), and [`paimon()`](/docs/sql-reference/table-functions/paimon) allow users to query open table format tables from within a SQL statement without any prior configuration. Versions of these functions exist for most common object stores, such as S3, Azure Blob Storage, and GCS. These functions also have equivalent table engines which can be used to create tables within ClickHouse which reference underlying open table format object storage - thus making querying more convenient.

See our getting started guide for [querying directly](/docs/use-cases/data-lake/getting-started/querying-directly), or by [connecting to a data catalogue](/docs/use-cases/data-lake/getting-started/connecting-catalogs).

### Expose catalogs as databases[​](#expose-catalogs-as-databases "Direct link to Expose catalogs as databases")

Using the [`DataLakeCatalog`](/docs/engines/database-engines/datalakecatalog) database engine, users can connect ClickHouse to an external catalog and expose it as a database. Tables registered in the catalog appear as tables within ClickHouse, enabling the full range of ClickHouse SQL syntax and analytical functions to be used transparently. This means users can query, join, and aggregate across catalog-managed tables as if they were native ClickHouse tables, benefiting from ClickHouse's query optimization, parallel execution, and reading capabilities.

Supported catalogs include:

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Catalog Guide|  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | AWS Glue [Glue Catalog guide](/docs/use-cases/data-lake/glue-catalog)| BigLake Metastore [BigLake Metastore guide](/docs/use-cases/data-lake/biglake-catalog)| Databricks Unity Catalog [Unity Catalog guide](/docs/use-cases/data-lake/unity-catalog)| Iceberg REST Catalog [REST Catalog guide](/docs/use-cases/data-lake/rest-catalog)| Lakekeeper [Lakekeeper Catalog guide](/docs/use-cases/data-lake/lakekeeper-catalog)| Project Nessie [Nessie Catalog guide](/docs/use-cases/data-lake/nessie-catalog)| Microsoft OneLake [OneLake Catalog guide](/docs/use-cases/data-lake/onelake-catalog) | | | | | | | | | | | | | | | |

See the getting started guide for [connecting to catalogs](/docs/use-cases/data-lake/getting-started/connecting-catalogs).

### Write back to open table formats[​](#write-back-to-lakehouse-formats "Direct link to Write back to open table formats")

ClickHouse supports writing data back to open table formats, which is relevant in scenarios such as:

- **Real-time to long-term storage** - Data transits through ClickHouse as a real-time analytics layer, and users need to offload results to Iceberg or other formats for durable, cost-effective long-term storage.
- **Reverse ETL** - Users perform transformations inside ClickHouse using materialized views or scheduled queries and wish to persist the results into open table formats for consumption by other tools in the data ecosystem.

See the getting started guide for [writing to data lakes](/docs/use-cases/data-lake/getting-started/writing-data).

## Next steps[​](#next-steps "Direct link to Next steps")

Ready to try it out? The [Getting Started guide](/docs/use-cases/data-lake/getting-started) walks through querying open table formats directly, connecting to a catalog, loading data into MergeTree for fast analytics, and writing results back - all in a single end-to-end workflow.

- [Why use ClickHouse with open table formats?](#why-clickhouse-uses-lake-formats)
  - [Query existing data in place](#querying-data-in-place)- [Real-time analytical workloads with ClickHouse](#real-time-with-clickhouse)- [Capabilities](#capabilities)
    - [Read data directly](#read-data-directly)- [Expose catalogs as databases](#expose-catalogs-as-databases)- [Write back to open table formats](#write-back-to-lakehouse-formats)- [Next steps](#next-steps)

Was this page helpful?