Alright, I was noodling on this with an esteemed colleague at dbt Labs and they think the following algorithm is a winning strategy for Snowflake:
create a production job which:
- clones the production database/schema into a new schema (run-operation)
- runs the
dbt run
against the cloned schema- swaps the new schema with the old production schema (run-operation)
If anything goes awry, they can run another job to swap the old and new databases/schemas and effectively perform a rollback.