Firebolt’s Apache Iceberg write capabilities are currently in public preview. We are gathering feedback and expanding support for this feature.
This command exports data from Firebolt into a new Iceberg table. To register an existing external Iceberg table so you can query it like a regular table, use
CREATE ICEBERG TABLE instead.Syntax
Parameters
| Parameter | Description |
|---|---|
<table_name> | A name for the exported Iceberg table. |
<select_query> | Any valid select query. |
<location_name> | The name of an Iceberg LOCATION object with CATALOG = FILE_BASED. |
<setting_name> | The name of a system setting. |
<setting_value> | The value to assign to system setting <setting_name>. |
PARTITION BY
ThePARTITION BY clause defines how the Iceberg table is partitioned. You can partition by column names or by Iceberg partition transform functions.
PARTITION BY expressions:
Examples
The following example writes the results of aSELECT query into a new Iceberg table at s3://my-bucket/path/to/iceberg/output.
region:
Remarks
You can use theiceberg_insert_sharding setting to control the trade-off between parallelism and the number of output files per partition. By default, Firebolt tries to group files of the same partition on the same nodes, resulting in less load per node and fewer output files, which is usually preferred for query performance.
Limitations:
- Catalogs: only supports a FILE_BASED catalog in AWS S3 object storage. I.e. the data and metadata files will be written to the specified location in S3.
-
Data types: supports the Iceberg equivalents of Firebolt’s data types, except
GEOGRAPHY. - Metadata: only writes limited metadata that is optional per the Iceberg spec. Does not write column statistics, etc.
-
DML operations on exported Iceberg tables are not supported. To query the exported data, use
READ_ICEBERG(...)or register it withCREATE ICEBERG TABLE.