On utilise sqlalchemy pour accéder à la bdd. Celle-ci va utiliser la bibliothèque déjà installée psycopg2

Les mêmes bib pour la visualisation et le traitement de données que précédemment. Notez DatetimeTickFormatter afin de modifier l'aspect des dates, autrement elles sont rapidement illisibles (sans compter le format non ordonné des dates à l'américaine!).

On commence par indiquer les paramétres d'authentification à la BDD, puis on génère le moteur

Ensuite on va utiliser un tour de magie de SQLAlchemy. Comme dit, tous mes capteurs sont dans le schéma "th" et ils ont tous le même format. Plutôt que d'aller les chercher un par un, on va simplement demander à SQL de récupérer tous les tableaux disponibles.

Comme pour le dashboard live, on s'intéresse d'abord qu'au bureau

On filtre les dates entre aujourd'hui et il y a trois jours.

Et on injecte le tout directement dans l'instanciateur de pandas Dataframe.

En formattant les dates, cette fois dans le sens français plutôt qu'américain.

Ok tout fonctionne. Maintenant on va faire quelque chose de plus complexe. Le dashboard devra pouvoir:

Pour faire tout ça, on va utiliser une classe param qui pourra être lu par Panel. En effet une classe param permet de définir différents paramètres avec leur type, limites, et noms. Panel saura lui-même générer les bons boutons et autres widgets afin de sélectionner ces paramètres. Il faudra composer des méthodes qui renvoient des objets interprétables par Panel, comme un graphique Holoviews, et qui dépendent de certains paramètres.

Voir la doc: https://panel.holoviz.org/user_guide/Param.html

On instancie

Maintenant il faut disposer les différents widgets et les méthodes qui renvoient des objects visibles. Pour ça on va combiner des objets Layout de Panel: des colonnes et des lignes, mais aussi deux feuilles (ou tabs).

Si on ne veut que certains widgets à un endroit, on peut les nommer dans l'objet panel.Param. Ci-dessous, les dates butoires:

On va maintenant rajouter une des méthodes :

Notez que même si les widgets sont dans une autre cellule que le plot, le plot reste intéractif! Il n'y a qu'un seul paramètre "upper_date" pour l'instance "mypanel", peu importe combien de fois vous l'appelez. Faites le test en rappelant les widgets des dates:

On va maintenant faire le dashboard en entier, avec les deux plots dans une tab différente et les widgets qui correspondent:

Il y a certainement des points à améliorer, notamment le fait que changer une date induit toujours un appel vers la base de donnée, même si la donnée est déjà inscrite dans le jeu de données déjà chargé!

Mais notre dashboard est là!