This project is an ETL data pipeline built with Apache Airflow, MinIO, and PostgreSQL to extract, transform, and load English Premier League data.
Football_data/
│
├── assets/
│ ├── bronze.py # Extract data and upload to MinIO (Bronze Layer)
│ ├── silver.py # Transform raw data into structured tables (Silver Layer)
│ ├── gold.py # Aggregate and flatten data for analytics (Gold Layer)
│ ├── init_db.py # Initialize PostgreSQL schemas and tables
│
├── get_data/
│ ├── fetch_matches.py # Fetch data from Football API
│ ├── minio_client.py # Helper functions to interact with MinIO
│ ├── load_from_minio.py # Read JSON objects from MinIO
│
├── dags/
│ ├── orchestrator.py # Airflow DAG orchestration
│ ├── gold_pipeline.py # DAG to upload only from Silver → Gold layer
│
├── docker-compose.yml
├── requirements.txt
└── README.md
Data Source: football-data.org
- Fetches raw football match data from the API.
- Stores unprocessed JSON files into MinIO.
-
Cleans, normalizes, and structures the JSON data.
-
Writes to PostgreSQL tables:
dev.silver_PL_teamdev.silver_PL_matches
-
Aggregates and flattens match data for analytics.
-
Generates advanced metrics and team standings.
-
Tables:
dev.gold_team_statsdev.gold_league_standings
- Python
- Apache Airflow
- MinIO
- PostgreSQL
- Docker Compose
docker-compose up -ddocker exec -it airflow-webserver python assets/init_db.pydocker exec -it airflow-webserver python assets/bronze.py
docker exec -it airflow-webserver python assets/silver.py
docker exec -it airflow-webserver python assets/gold.pyYou can connect the Gold Layer tables to:
- Apache Superset
- Metabase
- Power BI
For interactive dashboards and analytics.
- Add team performance KPIs (xG, possession %, etc.)
- Automate data refresh via Airflow scheduling
- Integrate data quality checks (Great Expectations)
- Build dashboard in Superset
💡 Developed for educational purposes by Football Data Analytics Team.


