Currently, Snowflake supports Iceberg tables through External Tables and also Native Iceberg Tables.

LIMITATION:

Iceberg on Snowflake is currently supported in private preview

Steps:

These are high level steps to help you integrate OneTable synced Iceberg tables on Snowflake. For more additional information refer to the Getting started with Iceberg tables.

Create an external volume

Iceberg tables on Snowflake uses user-supplied storage. The first step to create an Iceberg table is by creating an external volume in Snowflake to hold the Iceberg table data and metadata

  1. -- Create an External Volume to hold Parquet and Iceberg data
  2. CREATE OR REPLACE EXTERNAL VOLUME <volume_name>
  3. STORAGE_LOCATIONS =
  4. (
  5. (
  6. NAME = <'my-s3-us-west-2'>
  7. STORAGE_PROVIDER = 'S3'
  8. STORAGE_BASE_URL = 's3://<bucket_name>/'
  9. STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::<accountId>:role/<roleName>'
  10. )
  11. );

Create a catalog integration for Iceberg files in object storage

You can skip this step if you are using Snowflake as the catalog. You can also use AWS Glue as the catalog source.

  1. CREATE OR REPLACE CATALOG INTEGRATION <catalog_name>
  2. CATALOG_SOURCE=OBJECT_STORE
  3. TABLE_FORMAT=ICEBERG
  4. ENABLED=TRUE;

Create an Iceberg table from Iceberg metadata in object storage

Refer to additional examples in the Snowflake Create Iceberg Table guide for more information.

  1. CREATE ICEBERG TABLE myIcebergTable
  2. EXTERNAL_VOLUME='<volume_name>'
  3. CATALOG=<catalog_name>
  4. METADATA_FILE_PATH='path/to/metadata/<VERSION>.metadata.json';

Once the table creation succeeds you can start using the Iceberg table as any other table in Snowflake.