Algumas empresas possuem repositórios de dados centralizados (Data Warehouse e Data Lakes) que precisam ser trabalhados para gerarem valor. Nesse cenário, para revolucionar a Jornada Data Driven, é importante possuir uma ferramenta que se conecte a esses repositórios de dados e dê poder aos próprios usuários da área de negócio, analistas e engenheiros para gerar suas próprias transformações de dados, regras de negócios e insights valiosos. E uma das áreas que mais podem gerar valor com o uso de dados é a área de negócios. Em razão disso, surgiu a ferramenta dbt.

O que é dbt em dados?
dbt é uma ferramenta que facilita a transformação de dados. Dentro de um pipeline de dados, sempre é realizado um ETL ou ELT (extrair, transformar e carregar – na sigla em inglês). O dbt se concentra no “T” – transformação. Ele permite que qualquer pessoa com conhecimento em SQL crie fluxos de trabalhos de organização e transformações de dados, bem como seus fluxos de trabalho analíticos; tudo isso de forma colaborativa e seguindo as boas práticas de desenvolvimento de software como modularidade, portabilidade, CI/CD, testes e documentação.
Como surgiu o dbt em dados?

O dbt surgiu em 2016, em uma época quando existiam menos ferramentas em todas as etapas de dados. Mas foi criada para resolver essa dor latente que são a falta de unidade e o problema nas orquestrações de execuções SQL.
Com o surgimento do Redshift, Big Query, Azure Sinapse, Snowflake e entre outros bancos de dados para Data Warehouse em Cloud e distribuídos, os Projetos de Analytics passaram a ser mais ágeis para serem construídos (antes um projeto poderia levar meses e até anos para ser processado) e mais acessíveis (financeiramente falando). Dessa forma, mais empresas conseguiram o acesso a esse ambiente analítico. Assim, o ecossistema, como um todo, foi beneficiado com essa evolução. Com isso, várias ferramentas apareceram para se conectar com esses Data Warehouse, entre eles o dbt.
Um dos criadores do dbt, Tristan Handy, fazia parte da empresa RJ Metrics (que foi vendida para a Magento). Nesse contexto, há muito tempo, existiam pessoas envolvidas com analytics, preocupadas e conhecedoras de todo o ecossistema.
O dbt suporta diversas ferramentas como motor de processamento SQL, entre elas, temos o Snowflake, Teradata, Amazon Athena, prestoDB e entre outras. Algumas das conexões para motores de processamento SQLs foram criadas pelos próprios desenvolvedores do dbt, mas, em sua grande maioria, foi uma contribuição da comunidade. Isso é um ponto muito forte do dbt, que é uma ferramenta Open Source e com um grande apoio da comunidade de desenvolvedores.
Princípios do dbt

O dbt trabalha com alguns princípios básicos, sendo eles: SQL para Desenvolvimento Rápido, Controle de Versão, Trabalho Colaborativo, CI/CD, Teste, Documentação e Linhagem de Dados. Vamos, agora, falar de cada um desses pontos:
SQL para Desenvolvimento Rápido
O dbt é uma ferramenta que permite escrever em SQL combinado com uma linguagem de templates chamada Jinja, que possibilita que o código SQL seja reutilizável, modular, com blocos lógicos, condições e entre diversas outras facilidades.
Além disso, é possível escrever os modelos SQL modulares com instruções SELECT e a função ref() – para referenciar outros modelos de dados já existentes no seu projeto dbt; nesse aspecto, sem se preocupar com o gerenciamento de dependência, já que o dbt lida com esta tarefa.
Também é possível substituir operações DDL/DML padrão por instruções SQL SELECT simples que inferem dependências, criam tabelas, exibições e executam modelos em ordem.
Controle de versão, CI/CD e Trabalho Colaborativo
Com o dbt é possível implementar um pipeline de dados em SQL com segurança usando ambientes de desenvolvimento. O controle de versão habilitado para Git permite a colaboração e um retorno aos estados anteriores, em caso de falha e erros nos deploys.
Outra característica interessante é o processo de observabilidade em fluxos de trabalho de transformação com agendamento, registro e alertas no aplicativo web do dbt. Neste ambiente, pode-se criar políticas de proteção, garantindo que os dados se movam por meio de processos governados, incluindo ambientes de desenvolvimento, com estágios de desenvolvimento e produção gerados por cada execução de CI.
Testes
O dbt permite testes de regressão automatizados para que seja possível garantir que os módulos SQL estejam realizando as transformações corretamente; além disso, garante que os dados de origem e os dados de resultado estejam no formato desejado.
dbt oferece dois tipos de teste, os Testes de Esquema e os Testes de Dados:
- Testes de Esquema: declarações, como valores únicos, não nulos, aceitos e relacionados que são adicionados a arquivos .yml no modelo a ser testado.
- Testes de Dados: consultas SQL personalizadas que podem ser encontradas no diretório test. Os testes personalizados e pré-empacotados do dbt ajudam os desenvolvedores a criar uma “rastreabilidade” de suposições validadas para colaboradores de dados.
Documentação
Os recursos de documentação do dbt oferecem a capacidade de definir modelos de dados e suas colunas em um arquivo yaml de “source”, facilitando o acompanhamento das principais definições de dados.
É possível visualizar a documentação em uma interface web amigável, por meio de um catálogo de dados, com definições, dependências e a linhagem de dados de todo o ecossistema dbt.
Linhagem
Na visualização do Lineage dos dados do dbt, é possível saber exatamente de onde os dados saíram e para onde eles foram. É possível visualizar a linhagem de dados não somente em termos de entidades de base de dados, mas também em termos de modelos, dependências e processamentos. O dbt possui também o conceito de “Exposures”, em que é possível dizer que determinado dado está disponível, tudo isso em uma visualização em dashboard no Metabase.
Como o dbt funciona?
Existem dois arquivos principais no dbt, o arquivo profiles.yml e dbt_project.yml. Esses são arquivos exclusivos dessa ferramenta de transformação e fornecem muito poder, permitindo que você personalize o seu ambiente conforme a sua necessidade.
Os modelos de projetos são definidos no arquivo dbt_project.yml. É por meio desse arquivo que o dbt sabe que um diretório é um projeto dbt. Ele também contém informações importantes que informam ao dbt como operar em seu projeto.
O arquivo profiles.yml permite selecionar credenciais exclusivas de suas fontes e destinos de dados. Nestes arquivos, são descritos os perfis de banco de dados que serão conectados, com informações como: no profiles.yml.
Além desses arquivos, existem algumas características bem definidas na ferramenta dbt, sendo elas:
- Projeto;
- Modelo;
- Comandos.
Como o dbt funciona?

Existem dois arquivos principais no dbt, o arquivo profiles.yml e dbt_project.yml. Esses são arquivos exclusivos dessa ferramenta de transformação e fornecem muito poder, permitindo que você personalize o seu ambiente conforme a sua necessidade.
Os modelos de projetos são definidos no arquivo dbt_project.yml. É por meio desse arquivo que o dbt sabe que um diretório é um projeto dbt. Ele também contém informações importantes que informam ao dbt como operar em seu projeto.
O arquivo profiles.yml permite selecionar credenciais exclusivas de suas fontes e destinos de dados. Nestes arquivos, são descritos os perfis de banco de dados que serão conectados, com informações como: no profiles.yml.
Além desses arquivos, existem algumas características bem definidas na ferramenta dbt, sendo elas:
- Projeto;
- Modelo;
- Comandos.
Projeto
Um projeto dbt é um diretório que contém arquivos .sql e .yml . Os arquivos mínimos necessários são:
- Um arquivo de projeto chamado dbt_project.yml – esse arquivo contém configurações de um projeto dbt;
- Modelo(s) arquivos .sql – modelo em dbt é simplesmente um único arquivo .sql contendo uma única instrução SELECT .
Modelo
Um modelo dbt é basicamente um arquivo .sql com uma instrução SELECT. O modelo denominado “.sql” contém instruções SQL SELECT, que em tempo de execução serão aplicadas aos motores de processamento SQL – Data Warehouse com Snowflake, Redsfift, Big Query etc. ou framework de processamento SQL, como Spar, prestoDB, AWS Athena e entre outros.
O modelo também define o esquema de nossas tabelas de origem em source e o esquema das visualizações a serem criadas em models.
Comandos
Os comandos dbt começam com dbt e podem ser executados usando uma das seguintes maneiras:
- dbt Cloud – a seção de comando na parte inferior do painel dbt Cloud;
- dbt CLI.
Alguns comandos só podem ser usados em dbt CLI como dbt init.
O que o dbt não é

- Ferramenta de extração de dados: Como premissa, os dados já devem estar na Data Warehouse, no Data Lake, para que consiga transformar os dados com o dbt.
- Ferramenta de ETL/ELT: Só atende a camada T de transformação.
- Orquestrador de fluxos de trabalho: Apesar de, internamente, orquestrar toda a execução dos arquivos SQL, ele trabalha somente com os arquivos dele próprio, ou seja, não consegue orquestrar fluxo de trabalho de linguagens diferentes.
- Ferramenta de migração de dados.
- Engine de processamento de dados: Ele orquestra a execução dos próprios arquivos em SQL e deixa para que o Data Warehouse se encarregue de processar essas consultas.
dbt e os próximos passos

O dbt oferece uma experiência única para engenheiros e analistas de dados, pois usa instruções SQL SELECT simples para realizar transformações pesadas de maneira limpa e econômica. Seus módulos têm execução competitivamente mais rápida e são fáceis de modificar e testar. A integração do dbt com os modelos e templates, juntamente com a sua capacidade de controle de versão e realização de testes automatizados, torna o processo de transformação de dados mais robusto e seguro. Esta é uma excelente ferramenta de transformação e processamento de dados, empoderando qualquer pessoa na Jornada Data Driven, desde que se sinta confortável com a linguagem SQL.
No próximo post da nossa série sobre dbt, faremos um tutorial de exemplo, criando modelos, templates, testes e colocando nosso dbt em produção.
Aproveite e conheça mais em nosso blog!