Skip to content

Projeto de pipeline de dados, que consome os dados da SWAPI, transforma e sanetiza os dados. Orchestrado pelo Airflow

License

Notifications You must be signed in to change notification settings

Ruy-Araujo/projeto-final-DataOps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto DataOps

Introdução

Projeto desenvolvido para avaliação final da disciplina DataOps, ministrada no curso de MBA em Engenharia de Dados turma 03 (2023-2024), oferecida pela Faculdade Impacta de Tecnologia.

O projeto consite em obter dados da API “SWAPI — the Star Wars API” e gerar um arquivo .csv com os dados relativos a características do personagem, seu planeta natal e os filmes em que ele/ela participou.

A API SWAPI refere-se ao universo de Star Wars, maior franquia da cultura pop de todos os tempos, e traz dados relativos a Planetas, Naves Espaciais, Veículos, Pessoas (no nosso caso adotamos o conceito de Personagem), Filmes e Espécies. Todo o conteúdo do site em que a API está hospedada está em inglês, logo as bases estão denominadas no original como Planets, Spaceships, Vehicles, People, Films and Species.

Para esse projeto consumimos dados apenas das fontes Planets, People e Films, onde em Planetas temos informações sobre os planetas do universo Star Wars, em Personagens temos os detalhes sobre os personagens da saga, e em Filmes temos os dados relacionados aos filmes da franquia Star Wars.

Cabe ressalatar que o aplicativo abrange apenas os 6 primeiros filmes da saga, não expandindo para os conteúdos derivados em séries, livros, quadrinhos e jogos. Os filmes cobertos pelos dados da API são: Episódio I: A Ameaça Fantasma (1999); Episódio II: Ataque dos Clones (2002); Episódio III: A Vingança dos Sith (2005); Episódio IV: Uma Nova Esperança (1977); Episódio V: O Império Contra-Ataca (1980); Episódio VI: O Retorno de Jedi (1983).

Apesar da aplicação informar em sua página inicial que inclui dados de 7 filmes de Star Wars, contando também com os dados de O Despertar da Força, isso não se configurou quando realizamos a validação dos dados.

Requisitos

Os requisitos levantados e definidos para a concepção desse projeto estão a seguir em formato de tópicos para melhor visualização dos pontos que devem ser cobertos:

  • Formato da tabela de entrega: csv
  • Frequência de atualização do dado: frequência de 1x por dia
  • Parâmetro de coleta: 1 página por requisição
  • Salvar logs do processo
  • Armazenamento dos dados brutos
  • Armazenamento dos dados saneados:
    • Tratamento de tipos
    • Tratamento de nomes
    • Tratamento de nulos
    • Armazenamento dos dados agregados e tratados
  • Validação de qualidade de dados:
    • Validação de duplicados
    • Tolerância de nulos

Arquitetura do projeto

alt text

Extração

Para extração dos dados foi utilizado a biblioteca HTTPX, com o objetivo de realizar requisições HTTP de forma assíncrona. Utilizamos um parâmetro de coleta que se traduz em uma página por requisição, otimizando a eficiência do processo de ETL. Todos os dados brutos encontram-se armazenados na pasta data/swapi, preservando sua integridade original.

Sanitização

A sanitização dos dados foi realizada utilizando a biblioteca Pandas para garantir que os dados estejam limpos e prontos para análises avançadas. Foram realizados processos como remoção de caracteres especiais, conversão de tipos, remoção de valores nulos, etc, baseando-se nos arquivos de configuração encontrados na pasta meta. Os dados sanitizados de cada base encontram-se salvos separadamente na pasta data/swapi

Transformação e Disponibiliade

Após sanitizados, os dados foram transformados e agrupados em um único arquivo .csv para que possa ser consumido por outras aplicações. Os dados sanitizados de cada base encontram-se salvos separadamente na pasta data/swapi. Todas as configurações estão disponiveis na pasta meta.

Orquestração

Para a orquestração do projeto foi utilizada a ferramenta Airflow, com o objetivo de realizar a criação, agendamento das tarefas e monitoramento das mesmas. As tarefas (DAGs) foram construídas de forma a desencadear uma sequência de processos para a execução do pipeline de dados, garantindo que toda sua execução seja registrada, possibilitando localização precisa da ação caso tenha ocorrido algum erro no processo. As configurações realizadas nessa etapa encontram-se na pasta dags.

Origem dos dados

Os dados utilizados para a execução desse projeto foram extraídos das fontes:

Como executar o projeto

Para executar o projeto é necessário ter as ferramentas Docker e Docker Compose instaladas na máquina.

  1. Clone o projeto.

  2. Execute o build da imagem do Airflow customizada com as bibliotecas necessarias para o projeto:

docker build -t custom-airflow:2.7.2 -f ./Dockerfile.airflow .   
  1. Preencha as variáveis de ambiente necessarias no arquivo .env .

  2. Configure o projeto com o comando abaixo.

docker compose up airflow-init   
  1. Inicie o projeto com o comando abaixo.
docker compose up
  1. Acesse o Airflow em http://localhost:8080.

Contribuidores

About

Projeto de pipeline de dados, que consome os dados da SWAPI, transforma e sanetiza os dados. Orchestrado pelo Airflow

Topics

Resources

License

Stars

Watchers

Forks

Languages