Pipeline ETL automatisé pour extraire, transformer et charger les données du Stack Overflow Developer Survey 2025 vers Supabase, orchestré par Apache Airflow.
Les données proviennent du sondage officiel Stack Overflow 2025 :
Téléchargement : Stack Overflow Developer Survey 2025
Fichier requis : survey_results_public.csv (à placer dans le dossier data/)
- Docker & Docker Compose
- Les données CSV dans
data/survey_results_public.csv
Créer un fichier .env à la racine avec tes identifiants Supabase :
SUPABASE_URL=https://<ton-projet>.supabase.co
SUPABASE_SERVICE_KEY=<ta-clé-service># Initialiser Airflow
docker compose up airflow-init
# Démarrer les services
docker compose up -dOuvre ton navigateur : http://localhost:8080
- Username :
admin - Password :
admin
- Dans l'UI Airflow, active le DAG
stackoverflow_most_popular_technologies - Clique sur Trigger DAG pour lancer l'exécution
Le pipeline va :
- ✅ Extraire les données du CSV
- ✅ Calculer les statistiques par technologie et segment
- ✅ Charger les résultats dans Supabase
.
├── dags/
│ └── stackoverflow_most_popular_dag.py # DAG Airflow
├── data/
│ └── survey_results_public.csv # Données source (non versionnées)
├── outputs/ # CSV générés (non versionnés)
├── main.py # Code ETL (extract/transform/load)
├── docker-compose.yml # Configuration Docker
├── Dockerfile # Image Airflow + dépendances
└── requirements.txt # Dépendances Python
Pour exécuter le pipeline quotidiennement, modifier dans dags/stackoverflow_most_popular_dag.py :
schedule_interval="@daily" # au lieu de NonePuis redémarrer le scheduler :
docker compose restart airflow-schedulerLes résultats sont stockés dans Supabase, table most_popular_technologies :
| Colonne | Description |
|---|---|
| year | Année du sondage (2025) |
| chart_name | Catégorie (languages, databases, cloud, etc.) |
| technology | Nom de la technologie |
| segment | Segment de répondants |
| percentage | Pourcentage d'utilisation |
| category | Type (language, database, cloud, etc.) |
docker compose down- Les fichiers CSV volumineux sont ignorés par Git (
.gitignore) - Le fichier
.envne doit jamais être commité - Les données sont montées dans le conteneur via Docker volumes