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.