Pular para o conteúdo

Tema

Além da ementa · tema 36 de 40

dbt: transformação versionada em SQL

35 min · 2 vídeos · 11 cards · 1 drill

Por que cai

É a ferramenta que o mercado de analytics assumiu, e a banca pergunta não o que ela é, mas o que ela resolve. A resposta boa liga a três coisas que já vieram antes: versionamento e revisão, teste de dado, e linhagem. Quem descreve dbt como 'roda SQL' não mostra por que ele mudou a rotina.

Pré-teste · 1 de 2

responda antes de ver

O que a referência entre modelos permite que o dbt faça?

Quanta certeza você tem?

Vídeo · português · 23 min

Cobre modelo, teste e documentação, que são as três coisas que o dbt junta no mesmo lugar. Assista reparando em como a referência entre modelos aparece no código.

Em uma frase

O dbt dá ao SQL as garantias que o código de aplicação já tinha: versionamento, revisão, teste, documentação e linhagem — e monta a ordem de execução sozinho a partir das referências entre modelos.

O que ele é, e o que não é

ÉNão é
A camada de transformação (o T do ELT)Ferramenta de extração ou carga
Executor de SQL versionado dentro do warehouseUm banco de dados
Resolvedor da ordem entre modelosOrquestrador do pipeline inteiro
Gerador de documentação e linhagemFerramenta de visualização

Delimitar o escopo é metade da resposta na sabatina: quem diz que o dbt substitui o orquestrador mostra que não usou.

A referência: a ideia que sustenta o resto

Em vez de escrever o nome da tabela, o modelo referencia outro modelo. Dessa mudança pequena saem quatro capacidades:

  1. 1O grafo de dependências se monta sozinho.
  2. 2A ordem de execução é derivada do grafo, não de nomes de arquivo numerados.
  3. 3O dbt sabe o que precisa reconstruir quando um modelo muda.
  4. 4A linhagem vira um site navegável, respondendo 'quem consome isto' sem garimpo.

Materialização: três perguntas

MaterializaçãoQuandoCusto
ViewIntermediário pequeno, consultado por outros modelosNenhum de armazenamento; resolve na consulta
TableConsultado com frequência por painéisArmazenamento e tempo de build
IncrementalVolume grande que cresce por períodoComplexidade: chave única, lógica de atualização, refazer do zero
EphemeralLógica reaproveitada que não precisa existir no bancoNenhum: vira CTE em quem usa

As perguntas que decidem: quem consulta, qual o volume, com que frequência muda. E o erro a evitar é materializar tudo como tabela por reflexo — a maior parte dos modelos intermediários de um projeto não é consultada por ninguém.

Teste e documentação no mesmo lugar

Testes genéricos (unicidade, não nulo, conjunto de valores, integridade) são declarados em configuração ao lado do modelo. Testes específicos são consultas próprias que afirmam uma regra de negócio — e é aí que mora o teste que pega erro caro: o total batendo com a origem.

A documentação fica junto do código, e o site gerado traz o dicionário e o grafo. Isso resolve, de graça, a pergunta que sempre aparece em governança: o que essa coluna significa e quem depende dela?

Snapshot não é backup

snapshotMecanismo que captura mudanças de um registro ao longo do tempo, implementando dimensão de mudança lenta do tipo 2: preserva o valor antigo com data de validade quando o novo chega.

Serve para responder "qual era o segmento deste cliente em março". Não serve para restaurar ambiente — essa confusão aparece em entrevista e é fácil de evitar.

Como responder isso em voz alta

Para "o que ele resolve": ordem pelo grafo, teste junto do modelo, documentação e linhagem, e o fluxo de trabalho de software aplicado ao SQL. Termine delimitando: não move dado, não substitui orquestrador. Para materialização, dê os três critérios e mencione o custo escondido do incremental — é o detalhe que mostra uso real.

Se quiser outro ângulo1 vídeo
Complementar e curto, com o porquê antes do como. Bom para conseguir responder 'o que ele resolve', que é a forma como a pergunta chega na sabatina.

Como cai na sabatina

O que o dbt resolve que rodar scripts SQL agendados não resolve?

Erros comuns

  • Descrever dbt como orquestrador. Ele transforma dentro do banco e resolve a ordem entre modelos; quem agenda e coordena o resto do pipeline é o orquestrador.
  • Achar que dbt move dados. Ele não extrai nem carrega: opera sobre o que já está no warehouse. É o T do ELT.
  • Escrever o nome da tabela em vez da referência. Sem a referência, o grafo de dependências não se monta e a ordem de execução volta a ser manual.
  • Materializar tudo como tabela. Modelo intermediário costuma ser view; tabela custa armazenamento e tempo de build. Incremental existe para o que é grande e cresce.
  • Confundir teste genérico com teste de negócio. Unicidade e não nulo são o mínimo; o teste que pega erro caro compara o total com a origem.
  • Usar snapshot achando que é backup. Snapshot captura mudanças de registro ao longo do tempo, implementando dimensão de mudança lenta, e não serve para restaurar ambiente.

Flashcards

Card 1 de 11

0 certos · 0 a rever

Drill

Qual materialização?

Para cada modelo, diga a materialização esperada.

  1. 1.Modelo intermediário pequeno, consultado só por outros modelos.

  2. 2.Tabela de fato com bilhões de linhas, que recebe dados novos todo dia.

  3. 3.Dimensão consultada o tempo todo por vários painéis.

  4. 4.Trecho de lógica reaproveitado por três modelos e que não precisa existir no banco.

  5. 5.Modelo de apoio recalculado a cada execução, com poucas linhas.

Quiz · 1 de 2

Qual descrição do papel do dbt é mais defensável?

Explique para um gerente

Explique em um minuto por que escrever uma referência em vez do nome da tabela permite ao computador descobrir a ordem de execução sozinho.

Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.

Prefiro falar em voz alta

00:00

Toque para gravar, ou responda em voz alta sem gravar

Perguntas de sabatina deste tema2
  • · O que o dbt resolve que rodar scripts SQL agendados não resolve?
  • · Como você decide a materialização de cada modelo num projeto dbt?
Responder no simulado
Para ir além4 artigos