You have a Snowflake Stream named 'PRODUCT CHANGES' created on a table 'PRODUCTS'. A downstream task attempts to consume records from the stream, but occasionally fails with a 'Table PRODUCTS has been altered' error. The 'PRODUCTS' table undergoes DDL changes (e.g., adding/dropping columns) infrequently, but these changes are necessary for evolving business requirements. How can you design a more resilient data pipeline that minimizes disruptions caused by DDL changes to the 'PRODUCTS' table while still leveraging the 'PRODUCT CHANGES' stream?
Correct Answer: B
Option B (implementing retry logic) is the most practical and resilient approach. While DDL changes can temporarily disrupt the stream, retrying the task allows it to resume processing once the DDL changes are complete. Dropping and recreating the stream (Option A) would lose valuable change data. Creating a new stream (Option C) introduces complexity and requires significant code changes. Materialized views are not directly relevant to the stream issue when the underlying table changes. Pausing the task (Option E) might not be feasible in a production environment and doesn't guarantee data consistency during DDL changes. Streams are designed to continue working, albeit potentially with errors, after minor DDL changes to the underlying table, and a retry mechanism handles these temporary disruptions best.