dbt como ferramenta aceleradora da Jornada Data Driven
- Por Luan Pinto
[vc_row][vc_column][vc_row_inner][vc_column_inner][vc_single_image image=”4263″ img_size=”full” alignment=”center”][wgl_spacing spacer_size=”30px”][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]O que é dbt em dados?[/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column_inner][/vc_row_inner][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Como surgiu o dbt em dados?[/wgl_double_headings][wgl_spacing spacer_size=”30px”][vc_single_image image=”4281″ img_size=”full” alignment=”center”][wgl_spacing spacer_size=”30px”][vc_column_text]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.[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Princípios do dbt [/wgl_double_headings][wgl_spacing spacer_size=”30px”][vc_single_image image=”4265″ img_size=”full” alignment=”center”][wgl_spacing spacer_size=”30px”][vc_column_text]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: [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]SQL para Desenvolvimento Rápido[/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Controle de versão, CI/CD e Trabalho Colaborativo [/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Testes[/wgl_double_headings][vc_column_text]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.
[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Documentação[/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Linhagem[/wgl_double_headings][vc_column_text]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.[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Como o dbt funciona?[/wgl_double_headings][vc_column_text]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.
[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Como o dbt funciona?[/wgl_double_headings][wgl_spacing spacer_size=”30px”][vc_single_image image=”4267″ img_size=”full” alignment=”center”][wgl_spacing spacer_size=”30px”][vc_column_text]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.
[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Projeto[/wgl_double_headings][vc_column_text]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 .
[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Modelo[/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]Comandos[/wgl_double_headings][vc_column_text]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. [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]O que o dbt não é[/wgl_double_headings][wgl_spacing spacer_size=”30px”][vc_row_inner][vc_column_inner width=”1/4″][vc_single_image image=”4264″ img_size=”full” alignment=”center”][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]
- 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.
[/vc_column_text][/vc_column_inner][/vc_row_inner][vc_column_text]
- 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.
[/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row][vc_row][vc_column][wgl_double_headings title_tag=”h3″ title_color=”#325060″ subtitle_color=”#fcb813″]dbt e os próximos passos[/wgl_double_headings][wgl_spacing spacer_size=”30px”][vc_single_image image=”4279″ img_size=”full” alignment=”center”][wgl_spacing spacer_size=”30px”][vc_column_text]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! [/vc_column_text][wgl_spacing spacer_size=”30px”][/vc_column][/vc_row]

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.