Aller au contenu

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 atomiqueDELETE et INSERT dans 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.