Aller au contenu

E1 - Qualité des Données

Compétence C8 : Assurer la qualité des données en utilisant les outils de gestion de la qualité pour garantir l'exactitude, la cohérence, la synchronisation et la traçabilité des données.


1. Stratégie qualité

flowchart LR
    A["SOURCES\nAPIs publiques\ndata.gouv.fr"] --> B["VALIDATION ETL\n14 validators Python\ncolonnes, types,\nbornes, unicité"]
    B --> C["CONTRAINTES BDD\nFK, UNIQUE,\nCHECK 0-100%"]
    C --> D["CODE REVIEW\n2 revues\n7/10"]

    style A fill:#3498db,color:#fff
    style B fill:#f39c12,color:#fff
    style C fill:#2ecc71,color:#fff
    style D fill:#9b59b6,color:#fff

2. Validation ETL (14 fonctions)

Implémentées dans src/etl/load/utils/validators.py :

Validation Garantie
validate_csv_exists Le fichier source existe
validate_dataframe_not_empty Le dataset n'est pas vide
validate_required_columns Toutes les colonnes attendues sont présentes
validate_no_nulls Pas de valeurs NULL sur les colonnes obligatoires
validate_year_range Années dans les bornes attendues
validate_positive_values Valeurs numériques positives
validate_percentage_range Pourcentages entre 0 et 100
validate_unique_key Clés primaires uniques (pas de doublons)
validate_elections_data Cohérence données électorales
validate_participation_data Somme votants + abstentions = inscrits
validate_indicateurs_data Indicateurs sécurité cohérents
validate_geographie_data Codes INSEE valides

3. Contraintes en base de données

Type Nombre Exemples
PRIMARY KEY 17 commune.id_commune, prediction.id_prediction
FOREIGN KEY 12 commune.id_departement → departement
UNIQUE 8 (territoire, candidat, tour, annee, version)
CHECK 10 pourcentage BETWEEN 0 AND 100, tour IN (1,2)
NOT NULL ~50 Colonnes obligatoires
INDEX 15 Composites sur (id_territoire, type_territoire)

4. Traitements qualité appliqués

Problème détecté Traitement Impact
IDs territoire 7 chars vs 5 chars Normalisation str[2:] 14 484 lignes corrigées
Pourcentages NULL (0 voix) fillna(0) 745 lignes
Nombres format français Parsing 1.234,561234.56 Indicateurs sécurité
Doublons potentiels Contraintes UNIQUE en BDD Prévention automatique

5. Revues de code

Revue Score Problèmes Résolution
Review 1 6.5/10 15 CRITICAL + 35 MAJOR Corrections appliquées
Review 2 7/10 Tous CRITICAL/MAJOR résolus Validé

Corrections majeures : requêtes paramétrées (SQL injection), singleton engine, transaction safety, vectorisation transform.

6. Traçabilité

Élément Mécanisme
Sources de données Documentées dans SOURCES_DONNEES.md avec URLs et licences
Versions schéma 4 migrations Alembic tracées
Prédictions ML Version modèle (v1.0.0), métriques et features en JSONB
Modifications code Git (historique complet des commits)

Fichiers de référence : - Validators : src/etl/load/utils/validators.py - Contraintes : docs/02-architecture/database/05-contraintes-integrite.md - Code review : docs/03-code-review/