COF-C03 Question 104
Single answerApache Iceberg™A data engineering team stores Apache Iceberg™ tables in external cloud storage and wants analysts to query those tables from Snowflake without copying the data into native Snowflake tables. The team also wants Snowflake to stay aware of metadata changes made to the Iceberg table by another engine. Which approach best meets these requirements?
- A
Create an external table on the Iceberg data files and use AUTO_REFRESH so Snowflake can interpret Iceberg snapshots automatically.
- B
Create a Snowflake-managed Iceberg table so Snowflake stores the metadata and automatically tracks any commits made by external engines.
- C
Create an externally managed Iceberg table in Snowflake and configure catalog integration so Snowflake can use the external Iceberg catalog metadata.
- D
Load the Iceberg data into a permanent Snowflake table using COPY INTO, then create a stream to detect future Iceberg metadata changes.
Show answer and explanation
Correct answer: C
Explanation
The best answer is to create an externally managed Iceberg table and use catalog integration. Snowflake supports Iceberg tables so customers can work with Apache Iceberg data in object storage while relying on Iceberg metadata for table state. When another engine updates the Iceberg table, Snowflake must reference the external catalog metadata to see the latest snapshots and schema state. This is different from external tables, which operate on files rather than full Iceberg table semantics, and different from Snowflake-managed Iceberg tables, where Snowflake controls the catalog metadata. This aligns with Snowflake guidance on choosing between Snowflake-managed and externally managed Iceberg tables based on where the catalog and metadata are managed.
- A. Incorrect.
Incorrect. External tables in Snowflake are designed to query files in cloud storage, but they do not provide native Apache Iceberg table semantics by automatically interpreting Iceberg metadata, snapshots, and table state the way Iceberg tables do. AUTO_REFRESH helps detect file changes for supported scenarios, but it does not make an external table behave like a native Iceberg table backed by an Iceberg catalog.
- B. Incorrect.
Incorrect. A Snowflake-managed Iceberg table uses Snowflake as the catalog and manages the table metadata on behalf of the user. This is useful when Snowflake is the primary manager of the Iceberg table, but it does not match the requirement that another engine can make metadata changes that Snowflake must detect through an external catalog. The scenario specifically calls for externally managed metadata.
- C. Correct.
Correct. An externally managed Iceberg table lets Snowflake query Iceberg data stored externally without ingesting it into native Snowflake storage. By using a catalog integration, Snowflake can access the external Iceberg catalog and stay aligned with metadata changes committed by other engines. This is the appropriate design when the table lifecycle and metadata are managed outside Snowflake.
- D. Incorrect.
Incorrect. COPY INTO would physically load data into a native Snowflake table, which violates the requirement to avoid copying the data into Snowflake-managed storage. In addition, a stream on a Snowflake table tracks DML changes to that Snowflake table, not Iceberg metadata commits occurring in an external catalog.