2023-02-22 11:01:18 +00:00
---
slug: /en/engines/table-engines/integrations/iceberg
2023-06-23 13:16:22 +00:00
sidebar_position: 90
2023-02-22 11:01:18 +00:00
sidebar_label: Iceberg
---
# Iceberg Table Engine
2024-08-12 13:45:00 +00:00
This engine provides a read-only integration with existing Apache [Iceberg ](https://iceberg.apache.org/ ) tables in Amazon S3, Azure and locally stored tables.
2023-02-22 11:01:18 +00:00
## Create Table
2024-08-12 13:45:00 +00:00
Note that the Iceberg table must already exist in the storage, this command does not take DDL parameters to create a new table.
2023-02-22 11:01:18 +00:00
``` sql
2024-08-12 13:45:00 +00:00
CREATE TABLE iceberg_table_s3
ENGINE = IcebergS3(url, [, NOSIGN | access_key_id, secret_access_key, [session_token]], format, [,compression])
CREATE TABLE iceberg_table_azure
ENGINE = IcebergAzure(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])
CREATE TABLE iceberg_table_local
2024-08-15 13:16:09 +00:00
ENGINE = IcebergLocal(path_to_table, [,format] [,compression_method])
2023-02-22 11:01:18 +00:00
```
2024-08-12 13:45:00 +00:00
**Engine arguments**
2023-02-22 11:01:18 +00:00
2024-08-12 14:21:42 +00:00
Description of the arguments coincides with description of arguments in engines `S3` , `AzureBlobStorage` and `File` correspondingly.
2024-08-12 13:45:00 +00:00
`format` stands for the format of data files in the Iceberg table.
2023-02-22 11:01:18 +00:00
2023-02-22 12:57:30 +00:00
Engine parameters can be specified using [Named Collections ](../../../operations/named-collections.md )
2023-02-22 11:01:18 +00:00
**Example**
```sql
2024-08-12 13:45:00 +00:00
CREATE TABLE iceberg_table ENGINE=IcebergS3('http://test.s3.amazonaws.com/clickhouse-bucket/test_table', 'test', 'test')
2023-02-22 11:01:18 +00:00
```
Using named collections:
``` xml
< clickhouse >
< named_collections >
< iceberg_conf >
< url > http://test.s3.amazonaws.com/clickhouse-bucket/< / url >
2024-06-04 05:59:22 +00:00
< access_key_id > test< / access_key_id >
2023-02-22 11:01:18 +00:00
< secret_access_key > test< / secret_access_key >
< / iceberg_conf >
< / named_collections >
< / clickhouse >
```
```sql
2024-08-12 13:45:00 +00:00
CREATE TABLE iceberg_table ENGINE=IcebergS3(iceberg_conf, filename = 'test_table')
2023-02-22 11:01:18 +00:00
```
2024-08-12 13:45:00 +00:00
**Aliases**
Table engine `Iceberg` is an alias to `IcebergS3` now.
2024-09-11 15:02:25 +00:00
**Schema Evolution**
At the moment, with the help of CH, you can read iceberg tables, the schema of which has changed over time. We currently support reading tables where columns have been added and removed, and their order has changed. You can also change a column where a value is required to one where NULL is allowed. Additionally, we support permitted type casting for simple types, namely:
* int -> long
* float -> double
* decimal(P, S) -> decimal(P', S) where P' > P.
Currently, it is not possible to change nested structures or the types of elements within arrays and maps.
2023-02-22 11:01:18 +00:00
## See also
2023-04-19 16:10:51 +00:00
- [iceberg table function ](/docs/en/sql-reference/table-functions/iceberg.md )