Projeto Engenharia de Dados: Pipeline completo utilizando Airflow, AWS, Snowflake, dbt e Looker Studio
Neste projeto utilizei um banco de dados "vivo" (atualizado constantemente) de uma empresa fictícia de venda de veículos para desenvolver um pipeline completo, começando pela extração, transformação até a visualização dos dados, utilizando ferramentas como Airflow, AWS (EC2), Snowflake, dbt e Looker Studio.
- Acesso ao banco de dados da empresa utilizando o pgAdmin4 (PostgreSQL)
- Criei uma VM em EC2 tipo t2.large e sistema operacional Ubuntu.
- Utilizando cliente ssh e o terminal do meu computador, conectei a instância criada na AWS e instalei o Docker e o Airflow.
- Através do endereço público da instância e porta configurada para receber a interface gráfica, obtive acesso à plataforma do Airflow para configuração.
- Criei uma conta no Snowflake.
- Utilizando comandos em SQL no Snowflake, criei todo o ambiente para receber os dados, ou seja, o banco de dados, o schema (stage), warehouse e tabelas necessárias.
- Criação da DAG. Serão duas tasks por tabela: "get_max_id" e "load_incremental_data", pois no processo de carga incremental de dados devemos carregar a partir da última chave.
- Realizei as conexões do Postgres e Snowflake no Airflow.
- Publiquei e rodei a DAG no Airflow.
- Realizei algumas consultas SQL no Snowflake para testar se os dados foram enviados para lá. Após confirmar que os dados foram enviados com sucesso, testei também se os registros incrementais também estão sendo enviados. Registros incrementais também ok.
- Utilizei o dbt para transformar os dados dentro do DW.
- A ideia para esta etapa foi criar uma camada analítica do banco de dados para que usuários (analistas e cientistas de dados, gestores, etc) possam consultar os dados. Portanto dupliquei a camada origem criando a stage, para que haja um desacoplamento dos dados originais e não comprometê-los. A partir da stage, criei as camadas/tabelas dimensões, a fato e as análises.
- Configurei o dbt fazendo a conexão com o Snowflake, criei uma nova branch de desenvolvimento e configurei o arquivo source.
- Na camada de análise fiz alguns processos de transformação para atender alguns requisitos de negócio, relacionando as tabelas das dimensões dimensões e fato.
- Linhagem completa dos dados a partir da visualização da linhagem da tabela fct_vendas:
- Verifiquei que os dados foram corretamente para o Snowflake.
- O teste aplicado foi baseado na regra de negócio "Um veículo não pode ser vendido acima do preço de tabela e o valor máximo de desconto é de 5%". Portanto criei um arquivo na pasta "tests" com o seguinte código SQL:
- O teste passou com sucesso.
- Realizei o merge das branches.
- Criei um novo Environment para fazer o deploy.
- Criei um novo job na Environment de deploy e executei.
- Job executado com sucesso:
- Gerei os documentos do projeto.
- Embora o foco do projeto não seja exatamente a visualização dos dados e sim as etapas realizadas anteriormente, optei por criar um dashboard simples no Looker Studio para visualização de alguns dados do projeto.
- Configurei o Looker Studio para conectá-lo ao Snowflake.
- Dashboard realizado:







