25 Setembro 2023

O que é DBT (Data Build Tool)

O DBT é um fluxo de trabalho de transformação. O acrónomimo significa Data Build Tool.

Como tal, o DBT gere o T de ELT, não sendo o DBT a fazer a transformação. Vai necessitar de Postgres DB, SQL Server, Redshift, Databricks, Snowflake ou GCP (ou outros) para que o DBT possa enviar os seus processos de transformação para serem executados pelo motor DB .

O DBT cuida da orquestração dos processos de transformação (modelos), enviando-os para serem executados no motor DBT que configurou. Isso significa que o DBT usa SQL (onde o “sabor” SQL  depende do motor a que o conectar).

O DBT permite que analistas e engenheiros de dados automatizem a testagem e a implantação do processo de transformação de dados. Isto é particularmente útil uma vez que muitas empresas têm uma lógica de negócios cada vez mais complexa por trás dos seus relatórios de dados. A ferramenta DBT regista todas as alterações feitas na lógica subjacente e facilita o seguimento de dados e a atualização ou correção do pipeline por meio do controlo de versões.

Figure 1. DBT no ETL

Porquê DBT?

O DBT acrescenta muito mais do que ser simplesmente um processo de transformação. Segue-se uma rápida lista do que poderá ganhar ao usar o DBT:

  • Trabalhe com materializações e depois ajuste conforme necessário.

No DBT, trabalha-se com modelos que podem ser materializados como tabelas, vistas, incrementais ou temporárias. Para alterar o tipo de materialização, não é necessário reescrever o DDL como é habitual ao trabalhar com SQL, basta alterar a configuração para esse modo e o DBT trata disso na próxima vez que for executado.

Figure 2. Materialização no modelo

 

  • Lineage de dados desde o início

Um modelo nada mais é do que uma declaração SQL ,mas com o DBT, pode usar a palavra-chave ref, para se referir a um modelo upstream. Isso permite determinar a ordem de execução dos seus modelos, executar as suas transformações em etapas e extrair a lineage  completa dos seus projetos DBT .

Figure 3. DBT Lineage

 

  • Documente os seus modelos

Com o DBT, sua documentação é feita onde deve ser feita, junto dos seus modelos e sob controlo da versão. Terá acesso a toda a documentação criada por si e pelos seus colegas para o projeto localmente, uma vez que utiliza o mesmo repositório git para controlo de versões.

Pode facilmente partilhá-la também através de publicação num website estático, como o exemplo abaixo, se estiver a usar o DBT _core (open source) ou simplesmente executando o DBT no DBT cloud (assinatura paga).

Figure 4. Documentação + lineage Dbt lado a lado

 

  • Reutilize o seu código e use estruturas de controlo no seu código

Os ficheiros  SQL no DBT podem conter Jinja, uma linguagem de templates leve. Usar Jinja no SQL permite-lhe utilizar estruturas de controle nas suas consultas. Por exemplo, as instruções “if”e “for”. É vantajoso escrever o código SQL repetitivo desta forma:

Figure 5. SQL

Figure 6. SQL com Loop Jinja

  • Teste os seus modelos

Os testes estão totalmente integrados na estrutura DBT. Pode utilizar asserções no seu código (genéricas ou personalizadas) para testar os resultados gerados por um modelo e agir em conformidade, quer seja interrompendo a execução ou apenas alertando.

Além disso, pode integrar pacotes de testes automatizados no DBT (como DBT-expectations), permitindo alargar o âmbito dos testes que pode executar nos seus modelos.

  • Utilize pacotes externos para ajudar no seu desenvolvimento

O suporte DBT para pacotes externos em SQL e Python permite-lhe construir pipelines de dados mais complexos e poderosos, como a utilização da biblioteca pandas do Python para efetuar transformações de dados, por exemplo:

Figure 7. DBT Macro a usar Python

 

Opções para utilizar DBT

 

  • DBT Core

DBT core é a versão DBT em open-source. Pode instalá-lo na sua máquina local usando Homebrew (Mac OS ou Linux) ou o pip usando o adaptador que pretende utilizar, por exemplo, DBT-postgres. Pode também instalá-lo utilizando o Docker ou a partir do código-fonte git.

Com o DBT core, tem que gerir a infraestrutura do seu DBT, o controlo de versões e, dependendo do seu caso de utilização, uma plataforma de orquestração para executar os seus trabalhos de acordo com um calendário e monitorizá-los.

Consulte https://docs.getdbt.com/docs/core/installation para obter instruções de instalação.

  • DBT Cloud

DBT Cloud é um serviço baseado em cloud  que fornece funcionalidades adicionais ao DBT core.

Não terá de se preocupar com infraestruturas ou instalação de software, e gere as ligações/credenciais da sua base de dados. Proporciona-lhe controlo de versão de código + colaboração e opções de partilha. Terá acesso a agendamento e orquestração automatizados, assim como análises avançadas e relatórios que permitem acompanhar o desempenho das suas transformações de dados e identificar problemas e entraves.

Este serviço tem um custo associado e pode ser necessário apenas para determinados casos de utilização.

Consulte https://www.getdbt.com/pricing/ para obter os preços desta oferta.

 

DBT Practical Examples

No nosso próximo artigo, poderá ver alguns exemplos práticos.

 

     
                Rui Custódio 
          Specialist Consultant
Blog