Você conhece o DBT?

Conheça o orquestrador de dados que vai encantar seus analistas de dados!

Alexandre Reis
Dadosfera
5 min readNov 4, 2019

--

Você conhece o DBT? Já ouviu falar ou já trabalha com a ferramenta? Vou tentar aqui com um resumo rápido explicar e exemplificar de como é maravilhoso usar esse maestro da grande orquestra que é a engenharia de dados.

Surgimento do DBT

Senta que lá vem história panpanpanananpanpan
"Senta que lá vem história."

Antigamente, para se ter um Data Warehouse, era necessário um trabalho prévio de extração, transformação e carregamentos desses dados transformados de forma estruturada e pronta para utilização por alguém ou em alguma ferramenta de análise. Com o surgimento e disseminação dos bancos de dados NoSQL e das tecnologias de nuvem, providenciando elasticidade, disponibilidade e grande capacidade de processamento, esse esforço de trabalho prévio acabou se tornando mais caro, no ponto de vista de operações e infraestrutura. Assim então, esse paradigma foi otimizado para que os dados sejam extraídos, carregados e depois transformados em seus próprios Data Warehouses.

Essa mudança veio para que a complexidade de estruturação, desempenho e disponibilidade dos dados utilizando o ETL (Extract, Transform & Load) fossem resolvidos — alterando a ordem de operação dos dados para ELT (Extract, Load & Transform).

Com esse novo paradigma, podemos carregar os dados em repositórios de dados centralizados, tornando todos os dados disponíveis para diferentes consumidores de dados e aplicações.

Surge então a necessidade de ter uma ferramenta para que esse processo de transformação não fosse algo muito moroso e/ou complexo. Uma das ferramentas para suprir essa necessidade que apareceu foi o DBT, uma ferramenta que aproveita e foca somente na parte de transformação dos dados que iremos explanar melhor nos parágrafos a seguir.

O que é o DBT?

DBT é uma ferramenta para transformar dados (Data Build Tool) através de querys em SQL que permitem engenheiros e analistas de dados manipular seu Data Warehouse com mais eficiência. Essa é uma definição sobre uma ferramenta que apesar de parecer simples é de extrema necessidade para agilizar e simplificar qualquer transformação necessária em seus dados armazenados. Em um grande resumo o DBT compila, roda as querys salvando em uma nova tabela ou view dentro do seu database.

O DBT utiliza o conceito de modelos que são utilizados para a transformação dos dados. O código dbt é escrito no editor de texto de sua preferência e depois executado em uma linha de comando. O dbt compila todo o código no SQL bruto e executa esse código no data warehouse configurado conforme veremos no exemplo que darei ao fim do texto.

DBT Workflow

Por que utilizar o DBT?

Com o DBT todas esses empecilhos podem ser sanados. Você deve estar se perguntando como isso é possível, não é? Então, ao invés de realizar todo o processo de transformações com códigos complexos e extensos em python, o DBT utiliza SQL para rodar o código no seu database trazendo agilidade na escrita de códigos e reutilização das funções desenvolvidas.

O DBT suporta integralmente Data Warehouses como Postgres, AWS Redshift, Google BigQuery, Snowflakes e parcialmente Presto e Spark. Por último mas não menos importante, o DBT é um projeto open source onde a comunidade vem contribuindo bastante para melhorar cada dia mais a ferramenta.

Exemplo

Para demonstrar um exemplo de utilização do DBT, iremos utilizar o BigQuery da Google como Data Warehouse e um dataset público do StackOverflow disponível no BigQuery.

Primeiramente precisaremos instalar o DBT seguindo a documentação no próprio site do DBT. Após instalado devemos criar o projeto com o comando no terminal:

Para que o dbt funcione com o BigQuery, precisamos dar permissão. A maneira de fazer isso é configurando o perfil com informações de login. Basicamente, você precisa criar um perfil na pasta dbt e vincular esse perfil a esse projeto DBT específico que você acabou de criar. Para direcionar onde o dbt atuará, deve-se configurar o arquivo profiles.yml que se encontra na pasta .dbt e direcionar o seu projeto para utilização desta configuração através do arquivo dbt_project.yml. Assim os arquivos ficarão da seguinte forma após configurados:

É necessário que algumas informações acima sejam definidas especificamente para cada projeto como project, dataset e keyfile. Vale a lembrança que o nome dado no arquivo profile.yml deve ser passado no campo profile no arquivo dbt_project.yml.

Dentro da pasta criada do projeto encontra-se também a pasta models e é nessa pasta onde deve-se colocar os modelos de SQL para as transformações a serem realizadas. O modelo exemplo criado separamos as 10 primeiras linhas e algumas colunas do dataset público do Stack Overflow e colocamos em ordem decrescente considerando o número de visualizações das perguntas.

Após as configurações feitas e os modelos criados basta ir até a pasta do projeto e executar o comando para rodar o dbt através de um terminal:

Finalizado o processo e a mensagem de sucesso mostrada, podemos acessar o BigQuery e solicitar uma view de toda a tabela gerada no Query Editor com o código abaixo.

Interessante observar com os resultados obtidos que o assunto mais visto é relacionado a GIT e que não há uma correlação direta entre o número de visitas e a pergunta ser favoritada.

O céu agora é o limite e como Capitão Planeta já dizia:

"O poder agora é de vocês!!"

Se interessou pelo DBT e com toda simplicidade que ele pode te oferecer? Não deixe de entrar em contato pelo contato@datasprints.com! A empresa é parceira do DBT e tem profissionais extremamente qualificados para trabalhar com a ferramenta! Ah, e se quiser receber ativos de nossa metodologia, se inscreva no www.sprintdedados.com.br. A Sprint de Dados foi criada para ser uma metodologia aberta à comunidade, de forma a fortalecer o mercado de dados brasileiro. Curta o texto e compartilhe a palavra por um mundo de dados mais democrático e, principalmente, com resultados para as organizações. Até a próxima!

--

--

Alexandre Reis
Dadosfera

Desenvolvedor de Sistemas Embarcados e apaixonado por Machine Learning e Data Science