Skip to content

Indicium code challenge for Software Developer focusing on data projects

Notifications You must be signed in to change notification settings

Priscaruso/code-challenge

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Indicium Tech Code Challenge

Objetivo

O objetivo do projeto é elaborar um ETL usando as ferramentas postgresql, meltano e airflow, conforme a arquitetura mostrada abaixo:

image

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:

image

Pré-requisitos

Para conseguir executar o projeto é necessário ter os seguintes pré-requisitos:

Estrutura do projeto

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

Instalação dos bancos de dados Postgresql origem e destino

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"

Instalando o airflow usando o docker-compose

Dentro da pasta 'airflow-project' executar os seguintes comandos: "docker-compose up airflow-init" "docker compose up -d"

Execução do pipeline

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"

About

Indicium code challenge for Software Developer focusing on data projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published