- Projeto DataOps
- Introdução
- Requisitos
- Arquitetura do projeto
- Origem dos dados
- Como executar o projeto
- Contribuidores
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.
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
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.
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
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.
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.
Os dados utilizados para a execução desse projeto foram extraídos das fontes:
- People, disponível na URL: https://swapi.dev/api/people/?
- Planets, disponível na URL: https://swapi.dev/api/planets/?
- Films, disponível na URL: https://swapi.dev/api/films/?
Para executar o projeto é necessário ter as ferramentas Docker e Docker Compose instaladas na máquina.
-
Clone o projeto.
-
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 .
-
Preencha as variáveis de ambiente necessarias no arquivo .env .
-
Configure o projeto com o comando abaixo.
docker compose up airflow-init
- Inicie o projeto com o comando abaixo.
docker compose up
- Acesse o Airflow em http://localhost:8080.