ANÚNCIO

~/questoes/dados

Qual é a principal vantagem de usar Snapshots no dbt?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Dados e BI Snapshots Intermediario
Aula de referência dbt: guia completo com CI/CD
Para fixar

Snapshots no dbt: Rastreando Mudanças ao Longo do Tempo

Conceito central

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).

Por que essa resposta faz sentido

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.

Armadilhas comuns

  • Confundir snapshots com backups: snapshots não protegem contra falhas, eles documentam intencionalmente histórico de mudanças.
  • Achar que snapshots melhoram performance: na verdade consomem mais armazenamento porque mantêm múltiplas versões dos dados.
  • Pensar que snapshots substituem testes de qualidade: são funcionalidades complementares, cada uma resolve um desafio diferente no pipeline de dados.

Entenda as alternativas

A

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.

B

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.

C

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.

D

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.

Dica prática: Quando você tem uma tabela de clientes e precisa responder perguntas como 'qual era o endereço deste cliente em janeiro?', use snapshots. Configure um snapshot para sua tabela de dimensão, execute regularmente (diário, por exemplo), e você terá um histórico auditável de todas as mudanças sem complexidade de implementar SCD manualmente.

Revise pensando: Se sua tabela de produtos teve mudança de preço ontem, como você saberia qual era o preço antes sem snapshots? E como faria uma análise histórica de preços por período?