~/questoes/dados
Snapshots são uma funcionalidade do dbt que captura o estado de uma tabela em momentos específicos, criando um histórico temporal completo. Isso permite auditar quais dados mudaram, quando mudaram e como eram antes da alteração, sendo essencial para implementar dimensões que mudam lentamente (Slowly Changing Dimensions).
Snapshots existem especificamente para rastrear e auditar mudanças em dimensões ao longo do tempo. Eles mantêm um histórico completo do estado de uma entidade, permitindo análises temporais e implementação de SCD sem complexidade excessiva. Diferentemente de cópias de segurança ou otimizações de performance, o propósito central é a auditoria histórica.
Esta é a principal vantagem. Snapshots capturam versões anteriores dos dados, permitindo rastrear quando um cliente mudou de endereço, quando um produto teve preço alterado ou quando um status de pedido foi modificado. O histórico fica armazenado e pronto para análises temporais.
Snapshots não são backups incrementais. Backups protegem contra perda de dados, enquanto snapshots documentam intencionalmente as mudanças de dados para auditoria. Além disso, snapshots capturam estados específicos, não cópias completas de todas as tabelas.
Snapshots na verdade aumentam a quantidade de dados armazenados porque mantêm múltiplas versões históricas. Eles não otimizam performance de execução; o objetivo é rastreabilidade histórica, não velocidade computacional.
Snapshots são independentes de testes. Testes genéricos (not_null, unique, relationships) validam qualidade de dados, enquanto snapshots rastreiam mudanças. Um não substitui o outro; podem trabalhar juntos, mas resolvem problemas diferentes.