Pipelines¶
Trois DAGs, numérotés dans l'ordre de la chaîne.
flowchart LR
D10["10_seed_bronze_demo<br/><small>manuel</small>"] -->|asset| D30
D20["20_ingest_eco2mix<br/><small>quotidien 6h30</small>"] -->|asset| D30
D30["30_transform_dbt<br/><small>par asset</small>"]
10_seed_bronze_demo¶
Génère le jeu synthétique et le charge dans bronze.
| Planification | manuelle |
| Produit | warehouse.bronze.demo |
| Durée | ~12 s |
| Volume | ~120 000 lignes sur 6 tables |
Remplacement intégral, volontairement : on veut un état reproductible à chaque démonstration. Le générateur étant déterministe, l'état obtenu est toujours identique.
20_ingest_eco2mix¶
Ingère la production électrique régionale depuis l'API ODRÉ.
| Planification | 30 6 * * * — après consolidation de la veille |
| Produit | warehouse.bronze.eco2mix |
| Volume | 1 152 lignes/jour — 12 régions × 96 relevés |
| Paramètre | {"jour": "AAAA-MM-JJ"} pour un rejeu ciblé |
Motif d'écriture : table temporaire puis publication atomique¶
flowchart LR
A[API ODRÉ] --> B["extraire<br/><small>COPY vers tmp_…</small>"]
B -->|nom de la table| C["publier<br/><small>DELETE + INSERT<br/>une seule transaction</small>"]
C --> D[(bronze.raw_eco2mix_regional)]
Deux propriétés en découlent :
- Aucune donnée ne transite par XCom — seul le nom de la table temporaire, une chaîne. La base de métadonnées d'Airflow n'est pas un entrepôt.
- La publication est atomique —
DELETEetINSERTdans la même transaction. À aucun moment la table cible n'est amputée d'une journée sans son remplacement. Si l'étape échoue, l'ancien contenu reste intact.
Le rejeu est donc sans effet de bord : rattrapage, correction amont ou déclenchement manuel produisent le même résultat.
Contraintes de la source
Le champ date est typé texte : la comparaison doit se faire sur des
chaînes. Les colonnes de mesure arrivent tantôt en nombre, tantôt en
chaîne : le schéma est imposé à l'ingestion. La fenêtre disponible est
glissante, environ 50 jours.
30_transform_dbt¶
Construit silver et gold, puis joue les tests.
| Planification | BRONZE_DEMO \| BRONZE_ECO2MIX — par asset, OU logique |
| Produit | warehouse.gold |
| Commande | dbt build --target prod |
| Durée | ~4 s |
Déclenché par la mise à jour des données et non par un horaire : la transformation part quand la donnée est réellement arrivée. Mesuré : 3 secondes entre la fin de l'ingestion et le démarrage de la transformation.
Warning
Le | est indispensable. Une liste signifierait ET, et la transformation
ne repartirait plus jamais seule puisque le jeu synthétique n'est rechargé
que manuellement.