O objetivo do projeto é elaborar um ETL usando as ferramentas postgresql, meltano e airflow, conforme a arquitetura mostrada abaixo:
Na primeira etapa, os dados são extraídos de duas fontes diferentes, um arquivo csv chamado 'order_details' contendo detalhes sobre pedidos de um sistema de e-commerce, e um banco de dados Postgresql, contendo todas as demais tabelas sobre informações desse mesmo e-commerce armazenados no banco Northwind. Esses dados são armazenados no disco local no formato csv, já que se está lidando com uma pequena quantidade de dados e formato simples, o que facilita trabalhar com esse formato na segunda etapa.
Na segunda etapa, esses dados no formato csv armazenados localmente devem ser extraídos novamente e carregados agora em um banco Postresql final, no qual será rodada uma query gerando uma tabela com todos os pedidos e seus detalhes, também no formato csv, por estar trabalhando com uma pequena quantidade de dados e ser um formato que facilita a visualização de tabelas.
A imagem abaixo mostra o schema original do banco Northwind:
Para conseguir executar o projeto é necessário ter os seguintes pré-requisitos:
- Ter o docker já instalado para criar os container (https://docs.docker.com/get-started/get-docker/)
- Criar um virtual environment para instalar o meltano e seus pacotes
O projeto é composto das estruturas de pastas a seguir:
- airflow-project: diretório do airflow, contendo as pastas dags, onde está a DAG 'meltano- dag' para executar o ETL com meltano, config, plugins e logs, além do arquivo docker-compose.yml, no qual consta a imagem do airflow e suas configurações
- data:
- dbdata: metadados do banco Postgresql de origem
- docs: onde é armazenado a imagem da arquitetura do projeto
- meltano-project: diretório do meltano, contendo os plugins dos extractors e loaders, os dados extraídos pelo ETL na pasta 'output', e o arquivo 'meltano.yml' com as configurações dos extractors e dos loaders.
- output-dbdata: metadados do banco Postgresql de destino
- git ignore: arquivo
- docker-compose.yml: arquivo contendo a imagem e configuração do banco Postgresql de origem e de destino
- README.md: documentação sobre o projeto
Nesse projeto, usa-se dois bancos de dados Postgresql, um para a origem dos dados, que contém o banco northwind, e um para o destino dos dados, que vai armazenar. Dentro da pasta 'code-challenge' executar o seguinte comando: "docker-compose up -d"
Dentro da pasta 'airflow-project' executar os seguintes comandos: "docker-compose up airflow-init" "docker compose up -d"
Para executar o pipeline, ativar o ambiente virtual criado para o meltano e executar dentro da pasta 'meltano-project' os comandos abaixo: "meltano etl tap-csv target-postgres" "meltano etl tap-posgres target-postgres"

