Skip to main content
For an overview of querying, tuning, and exporting Iceberg tables, see the Iceberg guide. Creates an Iceberg database that mounts an external Iceberg catalog. Once created, you can query every table the catalog exposes using a fully qualified three-part name, without registering each table individually with CREATE ICEBERG TABLE. An Iceberg database stores only a pointer to an Iceberg LOCATION and a freshness setting. Each query resolves the table against the upstream catalog at run time, so any table added to the catalog becomes visible on the next query.

Syntax

Parameters

Supported catalog types

CREATE ICEBERG DATABASE works with any Iceberg LOCATION object that targets one of the following catalog types:
  • FILE_BASED
  • REST
  • AWS_GLUE
  • SNOWFLAKE_OPEN_CATALOG
  • DATABRICKS_UNITY

Name resolution

A fully qualified table name has three parts: <database>.<schema>.<table>.
  • <database> is the Iceberg database created with CREATE ICEBERG DATABASE.
  • <schema> maps to the upstream Iceberg namespace.
  • <table> maps to the Iceberg table within that namespace.

Examples

REST catalog

AWS Glue catalog

For role-based AWS access you can additionally set an external ID. An external ID is a value you choose and control that AWS checks when Firebolt assumes your role, adding a second condition on top of your account’s unique IAM principal. Configuring one is a recommended best practice. See IAM roles.

File-based catalog

Limitations

  • The LOCATION must be warehouse-/catalog-scoped. A LOCATION that pins NAMESPACE (REST), DATABASE (AWS_GLUE), SCHEMA (DATABRICKS_UNITY), or TABLE fails at CREATE ICEBERG DATABASE time.
  • Tables in a mounted database are resolved on demand by name. SHOW TABLES and information_schema.tables do not list them.

See also