Minha solução para o teste técnico para vaga de Engenheiro de Dados Jr na InfoPrice
|--data #Pasta com o dados
|--input #dados de entrada
|--output #dados resultantes da transformação
|--pipeline #codigos da pipeline
|--preprocess_pipelines #pasta com pacote de sub pipelines, para dar mais legibilidade
|--pipelines.py
|--transformations #pasta com pacote de transformações comuns nos datasets
|--columns_transformations.py #transformações comuns de colunas
|--joins.py #transformações de joins
|--response_transformations.py #transformações especificas para a coluna response
|--row_transformations.py #transformações comuns de linhas
|--main.py #script principal da pipeline
Para a construção do projeto, utilizei Pandas, pois facilitaria a exploração dos dados, para assim poder construir a pipeline e realizar os joins corretamente, além de ser uma tecnologia que tenho mais domínio. A princípio estranhei um pouco os arquivos de dados, pois não conhecia o formato jsonlines e tsv, porém uma jogada no google rápido resolveu essas questões. Assim que minha pipeline fazia exatamente o que precisava fazer, percebi que estava um pouco dificil de ler e compreender o que estava rolando, em partes por serem vários pequenos passos, e em outra pela própria sintaxe do pandas não ser tão clara, então trabalhei por últime em refatorar bem o código e deixar minhas ações bem explicitas. Por fim decidi colocar o código para rodar em container, para não acontecer caso "mas roda na minha máquina".
- Docker
sudo apt get docker
- Docker-compose
sudo apt get docker-compose
- python
sudo apt get python3
- Clone o repositório
git clone https://github.com/brianamaral/infoprice-engenheiro-de-dados-teste-tecnico-etl.git
- Rode o seguinte comando a partir da pasta raiz do repositório
make run-docker
- Rode o seguinte comando a partir da pasta raiz do repositório para inicializar o ambiente
make build
- E então rode o seguinte comando para iniciar a pipeline
make run