Snowflake Iceberg (Edge)

Last updated on Sep 24, 2026

This Destination is currently available for Early Access. Please contact your Hevo account executive or the Support team to enable it for your team. Alternatively, request for early access to try out one or more such features.

Snowflake is deprecating password-based authentication and enforcing Multi-factor Authentication (MFA). As a result, a Snowflake Iceberg Destination configured with Access Credentials may stop connecting at any time, even if data is currently being loaded.

Hevo recommends connecting to your Snowflake warehouse using key pair authentication, as it is not affected by these changes. Read Obtain a Private and Public Key Pair to create a key pair, and Modifying Snowflake Iceberg Destination Configuration to update an existing Destination.

Snowflake Iceberg combines Snowflake’s data management and query capabilities with the open Apache Iceberg table format. Snowflake offers a cloud-based data storage and analytics service, generally termed as data warehouse-as-a-service. It creates and manages the tables in your Amazon S3 bucket and provides the SQL interface for querying the data. The Iceberg format keeps the table data and the information used to manage it in a standard format, allowing other query engines, such as Apache Spark and Trino, to read the same tables.

Apache Iceberg is an open-source table format designed for managing and querying large datasets. It does the following:

  • Keeps information about a table separate from its data files, allowing query engines to find and read only the files they need.

  • Tracks changes to the table over time, allowing the schema and data partitions to evolve without disrupting existing data.

  • Records each change as a snapshot, enabling transactions and allowing you to view the table as it existed at an earlier point in time or roll it back to that state.

  • Scales to very large datasets by organizing data files into manifests and manifest lists.

Structure of an Iceberg Table

An Iceberg table architecture consists of the table data files and metadata files, with a catalog used to locate and manage the table. The following describes each of these:

  • Catalog: A centralized system that manages and organizes information about tables. Query engines use the catalog to discover, create, update, and drop tables.

  • Metadata: The information that describes an Iceberg table, such as its schema, partitions, and history. This information is stored separately from the actual data files, in the following files:

    • Metadata file: A JSON file that typically contains the table schema, partitions, and snapshot history. A snapshot records the files that make up the table at a specific point in time.

    • Manifest: An immutable Avro file that contains information about a group of data files, including file paths, partition values, and statistics such as row counts and minimum and maximum values.

    • Manifest list: An index that points to a collection of manifest files.

  • Data: The actual records in the table. Iceberg data files can use formats such as Parquet or Avro.

Snowflake-managed Iceberg Tables

Hevo loads your data into Snowflake-managed Iceberg tables. In this configuration, Snowflake manages the Iceberg catalog and the table lifecycle, while the table data and metadata files are stored in your Amazon S3 bucket through the external volume that you configure.

  • External volume: The Snowflake object that specifies the Amazon S3 location where the table data and metadata files are stored, along with the identity that Snowflake uses to access that location.

  • Horizon Catalog: The Snowflake catalog and governance layer for Iceberg interoperability. External query engines such as Apache Spark and Trino can access Snowflake-managed Iceberg tables through the Horizon Iceberg REST Catalog API.


Modifying Snowflake Iceberg Destination Configuration

You can modify some settings of your Snowflake Iceberg Destination after its creation. However, any configuration changes will affect all the Pipelines using that Destination.

To modify the configuration of your Snowflake Iceberg Destination:

  1. In the detailed view of your Destination, do one of the following:

    • Click the Destination Actions icon, and then click Edit Destination.

      Destination Actions menu

    • In the Destination Configuration section, click Edit.

      Click Edit in the Destination Configuration section

  2. On the Edit Destination page:

    Edit Destination page

    Note: The settings that cannot be changed are grayed out.

    • You can specify a new name for your Destination, not exceeding 255 characters.

    • You can modify the Warehouse that runs the queries loading your data.

    • In the Authentication section, you can modify the Authentication type, the Database User, and the fields required by the selected type:

      • Key Pair:

        • Private Key: Click the attach icon to upload your encrypted or non-encrypted private key file. Ensure that the public key corresponding to the uploaded private key is assigned to the database user configured in your Destination.

        • Passphrase: Click Change to clear the field. If you uploaded an encrypted private key, provide the password used to generate it; otherwise, leave the field blank.

      • Access Credentials:

        • Database Password: Click Change to update the password for the user configured in your Destination.
    • In the Iceberg Table Storage section, you can modify the following:

      • External Volume Name: The external volume that holds the S3 location of your Iceberg table files.

      • Base Location: The path inside your S3 bucket where your table files are stored.

    • In the Storage Configuration section, if you enabled the Use your S3 Bucket option while creating the Destination, you can modify the following:

      • Snowflake Storage Integration: The storage integration that allows Snowflake to access your S3 bucket.

      • IAM Role ARN: The ARN of the IAM role that grants Hevo access to your S3 bucket.

      • S3 Bucket Name: The bucket where Hevo stages your data before loading it into the Destination.

      • S3 Region: The AWS region of your S3 bucket.

      • S3 Path Prefix: The prefix added to the directory path where Hevo stages your data.

      • External ID: The external ID of the IAM role that Hevo uses to access your S3 bucket.

  3. Click Test & Save to check the connection to your Snowflake Iceberg Destination and then save the modified configuration.

The following settings cannot be changed after the Destination is created:

  • Account URL

  • Database Name

  • Use your S3 Bucket

  • Always quote table names or entity names


Data Type Evolution in Snowflake Iceberg Destinations

Hevo has a standardized data system that defines unified internal data types, referred to as Hevo data types. During the data ingestion phase, the Source data types are mapped to the Hevo data types, which are then transformed into the Destination-specific data types during the data loading phase. A mapping is then generated to evolve the schema of the Destination tables.

The following image illustrates the data type hierarchy applied to Snowflake Iceberg Destination tables:

Data Type Evolution

When two Source data types map to columns on different paths, Hevo evolves the column to the STRING data type. For example, if a column receives both INT and FLOAT values, it is evolved to STRING.

Data Type Mapping

The following table shows the mapping between Hevo data types and the Iceberg data types that Hevo uses to create your Destination tables:

Hevo Data Type Iceberg Data Type
BOOLEAN BOOLEAN
BYTEARRAY BINARY
-  BYTE
-  SHORT
-  INTEGER
INT
LONG LONG
DATE DATE
DATE_TIME TIMESTAMP
DATE_TIME_TZ TIMESTAMPTZ
DECIMAL -  DECIMAL
-  STRING
-  FLOAT
-  DOUBLE
DOUBLE
VARCHAR STRING
-  JSON
-  XML
-  ARRAY
STRING
TIME TIME
TIMETZ STRING
GEOGRAPHY STRING

Handling the Decimal data type

For Snowflake Iceberg Destinations, Hevo maps DECIMAL data values with a fixed precision (P) and scale (S) to the DECIMAL data type. This mapping is decided based on the number of significant digits (P) in the numeric value and the number of digits to the right of the decimal point (S). Refer to the table below to understand the mapping:

Precision and Scale of the Decimal Data Value Iceberg Data Type
Precision: >0 and <= 38
Scale: >= 0 and <= 37
Scale: <= Precision
DECIMAL

For precision and scale values other than those mentioned in the table above, Hevo maps the DECIMAL data type to a STRING data type.

Handling Time and Timestamp data types

Hevo creates the TIME, TIMESTAMP, and TIMESTAMPTZ columns of your Iceberg tables with a fixed precision of six digits, which corresponds to microsecond precision. Hevo truncates any fractional seconds beyond this limit. For example, a Source value 12:00:00.1234567890 is stored as 12:00:00.123456.

Handling of Unsupported Data Types

Hevo does not allow the direct mapping of a Source data type to any of the following Iceberg data types:

  • LIST

  • MAP

  • STRUCT

  • UUID

  • Any other data type not listed in the table above.

Hence, if the Source object is mapped to an existing Iceberg table with columns of unsupported data types, it may become inconsistent. To prevent any inconsistencies during schema evolution, Hevo maps the semi-structured Source data types, such as JSON, XML, and ARRAY, to the STRING data type in Iceberg.


Destination Considerations

  • Iceberg does not allow a FLOAT or DOUBLE column in the primary key of a table, because such columns cannot be used as identifier fields. If a Source object has such a column in its primary key, Hevo does not load the data for that object, and marks it as Skipped in subsequent Pipeline runs.

  • Iceberg reserves the _file, _pos, _partition, _spec_id, and _deleted column names for its own metadata columns. Hevo prefixes an underscore to any Source column with one of these names to avoid a conflict. For example, a column named _file is created as __file in your Destination. This match is not case-sensitive.

  • If you drop a Snowflake-managed Iceberg table that uses a customer-managed external volume, Snowflake manages the associated data and metadata files in the external storage and deletes them after the applicable retention period. The deletion is asynchronous and may take several days.


Limitations

  • Hevo replicates a maximum of 4096 columns to each Iceberg table, of which six are Hevo-reserved metadata columns used during data replication. Therefore, your Pipeline can replicate up to 4090 (4096-6) columns for each table.

  • Hevo does not support transient Iceberg tables for this Destination. Snowflake supports transient Iceberg tables only when they use Snowflake-provided storage (EXTERNAL_VOLUME = SNOWFLAKE_MANAGED), and not a customer-managed external volume such as the one configured in this Destination.

  • Hevo does not currently support publishing the Iceberg tables created by this Destination through Snowflake Open Catalog. Horizon Catalog is the catalog supported by this Destination.


Revision History

Refer to the following table for the list of key updates made to this page:

Date Release Description of Change
Sep-24-2026 NA New document.

Tell us what went wrong