O projeto cria uma solução de pipeline de dados para coletar, transformar e analisar informações sobre as cartas de Pokémon TCG (Trading Card Game), utilizando a arquitetura medalhão. O projeto é uma aplicação Python desenvolvida com o Airflow e MinIO data storage. Os dados são processados utilizando o pandas e o pyarrow e armazenados em formato Parquet, que é um formato otimizado para a consulta.
Pokémon TCG é um jogo em que cada um dos jogadores usa um baralho (deck) com 60 cartas para batalhar e ver quem é o vencedor, seguindo determinadas regras. O jogo é composto basicamente por cartas do tipo: Pokémon, treinador e energias.
- dags
- ingestion_pokemon_cards.py
- pipeline_pokemon.py
- transformation_analysis_cards.py
- transformation_pokemon_cards.py
- scripts
- Model
- analysisModel.py
- cardModel.py
- minio_connection.py
- processing_bronze_to_silver.py
- processing_silver_to_gold.py
- docker-compose-minio.yml
- docker-compose.yml
- Dockerfile
- Ingestion Pokémon Cards: Busca os dados na API, faz a ingestão dos dados na camada bronze em formato JSON.
- Transformation Pokémon Cards: Faz a escolha dos campos, valida com o modelo e salva em formato Parquet na camada silver.
- Transformation Analysis Cards: Cria as análises, valida no modelo de análise e salva em formato Parquet na camada gold.
- Pipeline Pokémon: Executa todo o processo descrito.
- Python
- Poetry
- Docker
- Docker Compose
-
Clone este repositório:
git clone https://github.com/rhanyele/tcg-pokemon-data-pipeline.git
-
Acesse o diretório do projeto:
cd tcg-pokemon-data-pipeline
-
Instale as dependências usando Poetry:
poetry install
-
Crie a imagem do docker com o Airflow e as dependências do Poetry instaladas:
docker build . -t poetry-apache/airflow:2.9.1
-
Execute o docker compose para criar os containers do Airflow:
docker compose up
-
Execute o docker compose para criar o container do MinIO:
docker-compose -f docker-compose-minio.yml up
Crie a conexão do Airflow com o MinIO:
Execute a Dag para fazer todo o processo de carga e processamento.
Os dados serão armazenados no MinIO:
Sinta-se à vontade para contribuir com novos recursos, correções de bugs ou melhorias de desempenho. Basta abrir uma issue ou enviar um pull request!
Rhanyele Teixeira Nunes Marinho
Este projeto está licenciado sob a MIT License.