Changelog
Rebuild and swap: reload a Snowflake table without an empty-table window
A new backfill mode loads into an empty clone of your Snowflake table and swaps it in when the load completes, so queries never see the table empty or half loaded.
Reloading a live table has always meant a trade-off. Truncate first and the table sits empty until the backfill finishes. Upsert on top and readers see a mix of old and new rows until it is done. Either way, anyone querying that table during the reload gets a view you would rather they did not.
Snowflake pipelines now have a third option in the backfill dialog: Rebuild and swap. Artie creates an empty clone of the destination table, loads the backfill into it, then swaps the two with a single ALTER TABLE ... SWAP WITH the moment that table completes. Because the staging table is a clone, it keeps the live table's grants, tags, comments, masking policies, and clustering key, so nothing attached to the table is lost in the swap. A checkbox lets you keep the previous table for rollback instead of dropping it.
Two things to know before you use it. Snowflake suspends automatic clustering on a clone, and Artie does not resume it yet, so if the table was auto-clustering you will need to run ALTER TABLE ... RESUME RECLUSTER after the swap. And a Snowflake stream defined on the table does not carry over to the clone. The mode is only offered for existing tables, is not available for history-mode tables or partial backfills, and does not work with soft partitioning, since the swap replaces the whole table. It is rolling out per account; ask us to turn it on.
This is for teams that need to refresh a Snowflake table that dashboards, models, or downstream jobs are reading right now.
Why this matters
- The live table stays queryable, with its current rows, until the replacement is complete
- No duplicate or partially loaded rows during the reload
- Grants, policies, tags, and the clustering key survive the swap without re-applying them