
Photo de Matt Artz sur Unsplash
Réalisation d’ingénierie
Boîte à outils Python, R et .NET pour les prévisions des marchés de l’électricité
Recevoir en continu les prévisions de marché électrique de treize pays, les conserver dans des bases locales et les rendre consultables par les analystes dans des tableaux de bord et des outils R.
Le projet
Un producteur d’énergie suisse actif sur les marchés européens de l’électricité reçoit les prévisions d’un fournisseur de données de marché, Wattsight, devenu Volue Insight, par une API REST et par un flux d’événements Server-Sent Events. Les courbes de consommation, de production renouvelable, de température, de disponibilité des centrales et d’échanges transfrontaliers couvrent treize pays et sont republiées à chaque exécution des modèles météorologiques ECMWF et GFS. Les analystes avaient besoin de ces courbes dans des bases locales interrogeables, avec leur historique, et de tableaux de bord qui suivent chaque nouvelle publication.
Approche technique
Le flux d’événements ne transporte que l’annonce d’une modification. L’écouteur relit la courbe par l’API avant d’écrire, ce qui garantit une série complète et horodatée dans le fuseau CET. Les événements d’ensemble ne sont retenus que pour la moyenne, afin de ne pas multiplier les écritures, et les événements consécutifs sur la même plage sont regroupés. Chaque pays dispose de ses propres processus et de ses propres bases, de sorte qu’une coupure sur un pays n’arrête pas les autres. L’écouteur Python et la bibliothèque R partagent les mêmes catalogues JSON et la même convention de nommage des tables ; le gestionnaire .NET les pilote sans dupliquer leur logique.
Résultat
Treize bases de prévisions et treize bases d’historique SQLite tenues à jour en continu, avec une table par courbe et ses métadonnées, consultables depuis R, depuis l’application Shiny et depuis le gestionnaire. Les tableaux de bord relisent l’API toutes les 30 secondes et affichent les nouvelles prévisions sans intervention.
Mon intervention
- Écouteur d’événements en Python, un processus par famille de courbes et par pays, abonné au flux Server-Sent Events de l’API. À chaque modification d’une courbe suivie, lecture de la nouvelle instance par l’API et remplacement de la série dans la base SQLite du pays, avec renouvellement du jeton OAuth2, reconnexion du flux et journal quotidien
- Bibliothèque R documentée dans un manuel R Markdown pour l’authentification, la recherche de courbes, le téléchargement des séries et des instances, la création des bases à partir de catalogues JSON, la reprise de l’historique depuis octobre 2016 et les graphiques Plotly
- Tableau de bord Plotly Dash par pays, servi en local, qui compare les dernières prévisions de vent, de solaire, de consommation et de température aux exécutions précédentes et aux valeurs réalisées, avec relecture de l’API toutes les 30 secondes
- Application Shiny pour parcourir n’importe quelle courbe d’une base, en graphique et en tableau
- Gestionnaire de bureau en .NET et WPF intégrant R par R.NET, pour éditer les catalogues de courbes, créer ou supprimer les tables et lancer les écouteurs et les tableaux de bord de chaque pays, avec prise en charge du proxy d’entreprise
Vue fonctionnelle
Vue fonctionnelle de la boîte à outils. L’API du fournisseur alimente un écouteur Python par famille de courbes et une bibliothèque R, qui écrivent dans les bases SQLite du pays. Les analystes consultent les données par le tableau de bord Dash, l’application Shiny et le gestionnaire .NET.
.NET
Python
R
SQLite
Composants et flux
- Flux Server-Sent Events de l’API vers l’écouteur Python, puis lecture de chaque instance modifiée et remplacement de la série dans la base de prévisions
- Appels REST de la bibliothèque R pour créer les tables à partir des catalogues JSON et reprendre l’historique depuis 2016
- Tableau de bord Dash relisant l’API toutes les 30 secondes, application Shiny lisant les bases SQLite
- Gestionnaire .NET qui édite les catalogues, lit les métadonnées des bases, crée ou supprime les tables par R.NET et lance les écouteurs et les tableaux de bord
Logique de traitement
Compétences associées
- Plateformes et entrepôts de données
- Logiciels et applications sur mesure
- API et intégration des systèmes
Prestations par secteur
Autres réalisations
Parlons de votre projet
Un échange sur la conception, le développement et la mise en production de votre projet.