Domain: Snowflake Features & Architecture
· 532 words · 10 min read

Iceberg Tables

Overview

Apache Iceberg is an open-source table format for massive analytic datasets. Snowflake supports Iceberg Tables, allowing users to query data stored externally in their own cloud storage using the Iceberg format, but with the performance and query semantics of native Snowflake tables. This is a new and important topic for the COF-C03 exam.

Key Concepts

The core benefit of Iceberg is interoperability. It prevents vendor lock-in by allowing multiple compute engines (Snowflake, Apache Spark, Trino, etc.) to securely read and write to the same single copy of data in a data lake.

Why Iceberg over standard External Tables?

While standard Snowflake External Tables are read-only and often suffer from slower performance, Iceberg Tables offer:

Catalog Integrations (The Two Modes)

To use Iceberg tables, Snowflake needs to know where the metadata (the catalog) is managed. There are two primary modes you need to know for the exam:

#### 1. Snowflake-Managed Catalog

#### 2. Externally Managed Catalog

External Volume

To create an Iceberg table, you must first create an External Volume. This is an account-level object that securely connects Snowflake to your external cloud storage bucket.

SQL Examples


-- 1. Create an External Volume (points to your AWS S3 bucket)
CREATE EXTERNAL VOLUME my_s3_vol
   STORAGE_LOCATIONS = (
      (
         NAME = 'my-s3-us-west',
         STORAGE_PROVIDER = 'S3',
         STORAGE_BASE_URL = 's3://my-company-bucket/iceberg-data/',
         STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789:role/my-role'
      )
   );

-- 2. Create an Iceberg Table (Snowflake-managed catalog)
CREATE ICEBERG TABLE my_iceberg_table (
    id INT,
    customer_name VARCHAR
)
    CATALOG = 'SNOWFLAKE'
    EXTERNAL_VOLUME = 'my_s3_vol'
    BASE_LOCATION = 'my_table_dir';

Exam Tips

⚠️ Crucial for COF-C03:

Key Takeaways