dbt: o framework que usa de sintaxe SQL para processamento de dados
Tenho planejado à algum tempo escrever sobre esse framework, que conheci e trabalhei à cerca de dois anos atrás!
E aqui começa o primeiro post sobre ele!💃 🎉
Como eu conheci o DBT?
Visto o crescimento da empresa que trabalhava naquele momento, nosso time tinha como objetivo a migração da nossa arquitetura para uma stack mais escalável, considerando também o desenvolvimento de pipeline de dados com maior facilidade. Como responsável pelas definições quanto ao ETL, comecei a fazer pesquisas junto ao time para conhecermos e testarmos algumas possibilidades, além das já conhecidas linguagens de programação Python e Spark. No meio desse desbravamento de tecnologias, conheci o framework DBT, o qual fiquei responsável por estudar e testar!
Me conta uma coisa: existe linguagem mais democrática que SQL para o mundo de dados? Pois é! Definitivamente, é um conhecimento must-have! Exatamente por esse motivo, nem preciso dizer que a curiosidade foi ao pico máximo e claro que as expectativas também!
Inclusive, depois das análises de prós e contras, as quais conversaremos em momento posterior, decidimos por utilizá-la como parte da stack de dados! E a partir daí, iniciamos o desenvolvimento de refatoração para darmos sequência na migração!
Bacana! Mas afinal de contas, o que é o DBT?
O DBT (data build tool) se trata de um framework, o qual utiliza de SQL como base de sintaxe, para processamento/transformação de dados analíticos. Ou seja, tem como foco a etapa de Transformação (T) do ETL (Extraction, Transformation and Load).
Além disso, o framework possibilita a utilização de macros e do jinja no desenvolvimento, com objetivo de utilizar de features já existentes e criar customizações.
O framework permite conexão com uma série de repositórios analíticos, como AWS Redshift, Bigquery, Snowflake, entre outros, como pode ver descrito abaixo! O interessante é que o framework permite configurações específicas para cada banco de dados, possibilitando dessa forma, customizações para melhoria de performance para cada solução.
Outra característica super importante desse framework está relacionada a criação de DAG, que se trata do encadeamentos entre os modelos (jobs) desenvolvidos. E sua composição nada mais é que todo o workflow do processamento de dados.
As DAGs são criadas durante o próprio desenvolvimento do job, na referência de seus códigos. Inclusive, essas DAGs podem ser visualizadas de forma gráfica, como no exemplo abaixo:
O DBT é open-source e está em constante expansão, com adições de features, conforme as versões evoluem!
Para acompanhamento das releases, basta verificar o link da versão desejada.
Existe também uma versão paga e em cloud, que é fornecida pela empresa Fishtown Analytics, criada pelos criadores e principais desenvolvedores (visto que a comunidade também contribui) do framework! A diferença é que a solução paga disponibiliza um produto automatizado, que contém algumas features, que possibilitam, por exemplo, o gerenciamento e administração de schedules do workflow, permitindo o acompanhamento de todo log através da interface gráfica.
O framework open-source exige, obviamente, desenvolvimento para a automação do processo de acompanhamento e schedule.
E quais são os prós e contras do Framework?
Claro que esse tipo de análise é bem particular, pois cada empresa possui suas necessidades e expectativas em diversos aspectos e esses fatores deverão ser considerados nesse processo analítico de forma individual.
Dito isso, fiz uma consolidação de tópicos que entendo que sejam relevantes numa perspectiva geral.
Massa! E como posso fazer a instalação e configuração do DBT?
A sua instalação pode ser realizada em Linux (Ubuntu, Debian e CentOS), Windows e macOS, e o requisito para isso é ter instalado o Python 3.6!
Para efetuar a instalação, siga o passo-a-passo descrito neste material.
Uma vez que o framework é instalado, um diretório é criado, com as divisões compostas, conforme descrito na imagem abaixo:
Cada pasta criada dentro desse diretório tem um determinado objetivo, sendo eles:
- analysis: Onde são armazenados as queries analiticas, como reportes.
- data: Onde devem ser armazenados arquivos com sample de dados raw
- dbt_modules:Onde são instaladas as packages do dbt
- logs: Onde ficam armazenados os logs do dbt
- macros: Onde são armazenados macros que podem ser reutilizadas
- models: Onde são criados de fato os modelos de dados, com extensão .sql
- snapshots: Onde são armazenados snapshots
- target: Onde o dbt armazenará os script sql compilados para criar os modelos
- tests: Onde são armazenados os arquivos de teste
- O arquivo dbt_project.yml se trata do arquivo que contém parâmetros de configurações para execução do pipeline utilizando de diretórios internos para processamento de dados e possíveis variáveis a serem consideradas.
Após a instalação, além da pasta criada no local de instalação, com a estrutura descrita acima, uma nova pasta oculta chamada dbt será criada em sua área de trabalho com um arquivo chamado profiles.yml. Esse arquivo deverá ser atualizado com os parâmetros de acesso ao repositório analítico a ser utilizado, como pode ser consultado abaixo.
Uma vez concluída a instalação e configurações realizadas, basta iniciar o processo de desenvolvimento da transformação do dado utilizando do DBT!
Ficou interessado(a) em saber mais? Então fique atento, pois em breve compartilharei sobre funcionalidades e configurações básicas, importantes para qualquer desenvolvimento no DBT! 😉
Até lá! ❤