DBT: Primeiras impressões

Anselmo Borges
Rescue Point
Published in
6 min readJan 23, 2023
Colocando mais uma ferramenta no meu arsenal

Como sempre digo, em dados, existe sempre mais de uma maneira de fazer a mesma coisa, seja programando, seja low-code, com ferramenta A, B e C ou só a B, isso varia muito de como você estrutura seu Stack de dados (grupo de ferramentas usadas para trabalhar com dados da origem ao destino), de acordo com preço, recursos humanos e computacionais, tempo de aprendizado das ferramentas envolvidas, Lock-in (Você ficar travado numa ferramenta e não conseguir migrar), ou as vezes preguiça do arquiteto ou o engenheiro de dados que montou a solução.

Vou montar alguns materiais falando sobre algumas ferramentas possíveis para esse stack aqui no blog, já tenho falado bastante de Databricks, fiz um roteiro pra você sair do zero, já falei bastante de Apache Nifi na ingestão de dados variados (pretendo falar de Airbyte que me apaixonei) e agora nesse vou falar de outro dos queridinhos da maioria das stacks de dados do mundo: O DBT!

Outra que tô bem impressionado

O DBT é uma ferramenta de dados voltada para o ETL/ELT (E — Extract, T — Transform e L — Load) mas bem focada nas letras L (Load) e T (Transform), ela deixa a ingestão do dado para ferramentas como Scripts python com Airflow, Apache Nifi, Airbyte, Azure Data Factory e outras.

Na empresa que trabalhei anteriormente, o processo funcionava quase de forma completa no Databricks (não fui eu que defini tá, rs), em alguns casos a ingestão e transformação era feita no Azure Datafactory mas sinceramente eu acho que ele não faça com de uma forma tão incrível como o DBT.

Data Plataforms

Como o DBT atua numa parte apenas específica, o intuito é entregar o dado pronto pra uso para ferramentas analíticas independente de qual seja o seu data plataform. Olhando num contexto onde você já fez a ingestão RAW (dados brutos sem tratamento) dos dados no seu destino, usamos esse mesmo data plataform para que o DBT leia o conteúdo e disponibilize os dados prontos pra consumo no mesmo local. Os Data Plataforms que posso trabalhar com o DBT de forma suportada são os seguintes:

  • Postgres / AlloyDB
  • Azure Synapse
  • Dremio
  • Spark
  • SnowFlake
  • Databricks
  • Redshift
  • Google BigQuery

Note que com exceção do Postgres todas as demais são ferramentas pra processamento analítico de dados em grande escala. Ele também dá suporte para diversas outras bases mas com adaptadores criados pela comunidade conforme a lista no link abaixo:

Note outra coisa, não tô falando de arquivos Parquet, CSV, Json, eu to partindo do pressuposto que esses arquivos já se encontram disponíveis no formato de tabela no Data Plataform escolhido no formato RAW, isso porque o DBT vai trabalhar inicialmente como um IDE que roda consultas SQL (isso mesmo, até o momento que tô estudando não vi nada de Python, não correndo da programação denovo, mas SQL é o que o povo mais manja). Enfim, o DBT se conecta no Data Plataform e rodo consultas SQL onde as organizo de uma forma muito foda em que faço todo tratamento e customização dos dados atrelando o SQL a outras funcionalidades da ferramentas que veremos já!

Se liga um desenho que dá um overview de funcionalidades que ela oferece.

Principais características que achei

Automação DataOps

De cara, eu vi que quando crio o projeto, eu crio tudo que preciso numa estrutura de pastas entre módulos, testes e outras funcionalidades, pra uma esteira DataOps visando automatizar todo o processo de transformação do dado isso é do c******. Segmentações por ambiente, desenvolvimento paralelo em branches, pull requests, restrições de acessos, plano de rollback, TESTES, tem TESTESSSS!

Para de desenvolver em produção caraaaa! rs

Documentação

Outro ponto que pirei é a documentação que ele gera, hoje um dos maiores problemas dos projetos de dados são as documentações do projeto, quando existem nas empresas estão meio perdidas sem padronização. O DBT cria pra você, bonitão, a para mostra o lineage (tipo as transformações feitas no dado desde que ele era RAW) Manoooooo!

Chora nessa demonstração da criação da documentação de dados.

Acabaram as desculpas pra não ter mais documentação de forma simples ele pega o que já tem e você completa com as demais informações do projeto, com quem falar, quando foi feito e isso é excelente para uma manutenção ou alteração sem ficar enchendo o saco de quem fez. Se liga um exemplo de como ele exibe o lineage.

Melhor do que você ficar olhando aquele bacalhau em python

Uso do SQL

Nem todo mundo nasceu programando jovem, programar na minha opinião é um dom, eu mesmo não nasci com esse dom, mas to tô treinando pra ser menos ruim, mas SQL mano, SQL se aprende fácil, se usa fácil e falando de mercado e de legado, mais fácil você gestor pegar aquele cara que tá contigo a anos usando SQL e fazer uma curva muito menor de aprendizado pra ele usar DBT do que fazer pedir pra ele fazer o ETL em Python que vai exigir uma curva de aprendizado bem maior (não quer dizer que ele não tenha que aprender um dia, como disse, odeio mas estudo, rs).

No meu caso, criei um SQL Warehouse no Databricks e criei 3 tabelas lá, fiz uma conexão via Partner connect com o DBT e dentro do DBT estou rodando uma consulta SQL simples, se liga:

Essa é uma das tabelas que criei no Databricks

A idéia do Analytics Engineer

A DBT vende a idéia de uma nova profissão, que pra um cenário onde eu tenho a ferramenta faz sentido. Na minha opinião o termo Data Engineer está superdimencionado, os caras querem que o Engenheiro de dados jogue no ataque, cobre o escanteio, cabeceie, apite o jogo, faça o plano tático e seja o torcedor. Na sugestão feita por eles, o Data Engineer trabalharia na ingestão de dados e Dataplataform, cuidando das integrações, fontes, ferramentas necessárias, o Analytics Engineer faria as transformações dos dados na camada do DBT que vai precisar de contato com a área que vai consumir os dados, conhecendo as necessidades, entregar esse dado de forma performática, documentar a transformação e algumas outras roles que não lembro o que faz total sentido, essa é uma parte da função que hoje é do Data Engineer que ocupa quase 65% das suas skills na minha opinião. Esse quebra ajudaria na capacitação de profissionais em uma trilha não muito grande e que teria impacto bem mais rápido no resultado no ponto de vista de gestão. Algo que eu realmente gostaria de testar nos meus times.

Dica do Anselmo

Pra colocar mais essa ferramenta no arsenal, estou fazendo um curso que a própria DBT disponibiliza DE GRAÇA! Tô terminando ele aqui e vou fazer novos posts, recomendo você fazer o cursinho que ele gera aqueles badges legais de colocar no Linkedin, rs.

Segue abaixo o link do curso:

Por hoje era isso, senão me empolgo e coloco o curso quase todo aqui e não tenho tempo pra isso agora, não sou mais um desempregado! rs

Espero que ajude e conforme for descobrindo mais coisas legais do DBT vou colocando aqui.

Abraço e até o próximo!
Anselmo Borges

--

--

Anselmo Borges
Rescue Point

Bigdata Engineer, Cloud Architect, Nerd, Alcoholic, Brazilian Jiujitsu Black belt and hide and seek World champion.