DBT como ferramenta aceleradora da Jornada Data Driven
- Por Luan Pinto

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ócio. 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, entre outros bancos de dados para Data Waherouse em Cloud e distribuído, os Projetos de Analytics passaram a ser mais ágeis para serem construídos (antes um projeto poderia levar meses e até anos para serem processados) 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 Waherouse, 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, haviam 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, 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, 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 o Desenvolvimento Rápido
O dbt é uma ferramenta que permite escrever em SQL combinado com uma linguagem de templates chamada Jinja, que permite que o código SQL seja reutilizável, modular, com blocos lógicos, condições, 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 está 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 relacionamentos 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, através 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. É através 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, 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.
Comando
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 diferente.
- 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.

Conheça a Rox School
Somos especialistas em cuidar dos seus dados, oferecendo soluções inovadoras e parcerias com os maiores nomes da tecnologia para manter você sempre à frente.