Skip to content

refactor:completeness:replacement de l'année de creation par l'anneé obtenu de la date de création#457

Draft
Tchouanga12 wants to merge 25 commits intomainfrom
feat/completeness/ajout-de-la-vue-retroactive
Draft

refactor:completeness:replacement de l'année de creation par l'anneé obtenu de la date de création#457
Tchouanga12 wants to merge 25 commits intomainfrom
feat/completeness/ajout-de-la-vue-retroactive

Conversation

@Tchouanga12
Copy link
Copy Markdown
Collaborator

@Tchouanga12 Tchouanga12 commented May 1, 2026

Type de PR

  • Bugfix
  • Feature
  • Refactor
  • Chore / Tech debt
  • Documentation
  • Autre (à préciser)

Objectif

Changement de la colonne annee_de_creation à date creation du à la nouvelle données obtenu.

Contexte

La requêtes SQL implémentée au niveau de la table station_creation_date et la modification faite sur la v_station

Changements

  • Change de variable annee_de_creation à date_de_creation
  • Changement de la variable annee_de_fermeture à date_de_fermeture
  • Changement de la variable annee_de_fermeture dans vue station à date_de_fermeture
  • Changement de la variable annee_de_creation dans vue station à date_de_creation

Décisions techniques

Impacts

  • API / contrat
  • Modèle de données / DB
  • Calculs métier
  • Performance
  • Sécurité
  • Infra / déploiement
  • Aucun impact transverse identifié

Tests

  • Tests unitaires
  • Tests d’intégration
  • Tests manuels
  • Non applicable (à justifier)

Points d’attention pour la review

Suivi

  • Migration à prévoir
  • Documentation à mettre à jour
  • Tâche(s) de suivi à créer

@Tchouanga12 Tchouanga12 requested a review from jlecordier May 1, 2026 09:39
Comment thread backend/sql/schemas/001_source_tables.sql Outdated
Comment thread backend/sql/views/001_v_station.sql Outdated
@Tchouanga12 Tchouanga12 changed the title refactor:completeness:replacement de l'al'année de creation par al'nneéobtenu de la date de création refactor:completeness:replacement de l'année de creation par l'anneé obtenu de la date de création May 2, 2026
Tchouanga12 added 14 commits May 2, 2026 17:37
…ates de création comme date de début de classement
Comment on lines +38 to +39
SELECT COUNT(*) AS station_completeness_count FROM mv_completeness_par_station_classe_4_1806_2026;
SELECT COUNT(*) AS station_completeness_count FROM mv_completeness_par_station_classe_1806_2026;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça veut dire qu'il faut refaire une table tous les jours pour mettre à jour la completness ? Ne mets pas d'années dans le nom de la table

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D’accord, je vais modifier les noms des MV.
En principe, il n’est pas nécessaire de les mettre à jour tous les jours, car elles dépendent de l’évolution du classement des stations dans le temps.

Si la table station_classe change chaque année, alors les MV devront être mises à jour annuellement. Tout dépend en réalité du rythme auquel cette table évolue.

Pour l’instant, un calcul basé sur une date_fin correspondant à la fin de l’année en cours est suffisant. Il est inutile d’effectuer un calcul journalier du completeness, car cela entraînerait un gaspillage de ressources.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En théorie, une station peut changer de classe du jour au lendemain, donc ça ferait rafraichir la mv tous les jours

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D'accord.

@jlecordier
Copy link
Copy Markdown
Collaborator

@Tchouanga12 Tu me corriges si je me trompe, mais là ça calcule juste la completness sur la durée de vie de la station, et pas entre deux dates ? Donc qu’est-ce qu'il faudra que je fasse moi dans le code si je veux la completness entre 2 dates arbitraires ?

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

Tchouanga12 commented May 6, 2026

@jlecordier Le code actuel calcule la complétude entre deux dates : une date de début fixée au 01/01/1806 (correspondant à la date de début de classement de la station la plus ancienne) et une date de fin correspondant à aujourd’hui.
Pour calculer la complétude de manière arbitraire entre deux dates, il suffit simplement de modifier les champs date_debut et date_fin dans la table params.

image

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

Étant donné que nous travaillons avec des timestamps, cette date devra être convertie en timestamp.

@jlecordier
Copy link
Copy Markdown
Collaborator

@jlecordier Le code actuel calcule la complétude entre deux dates : une date de début fixée au 01/01/1806 (correspondant à la date de début de classement de la station la plus ancienne) et une date de fin correspondant à aujourd’hui. Pour calculer la complétude de manière arbitraire entre deux dates, il suffit simplement de modifier les champs date_debut et date_fin dans la table params.

Merci pour la confirmation

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

Les requêtes utilisées dans les vues matérialisées sont des requêtes de base qui peuvent être réutilisées pour effectuer des requêtes sur des périodes arbitraires.

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

J’ai fait une comparaison de l’opération de soustraction (qui est l’opération la plus fréquente dans les requêtes), suivie d’une agrégation par somme sur 5 500 lignes.

Avec le casting en date, nous obtenons une prise en charge de 786 requêtes par seconde avec un temps d’attente de 12 secondes, contre 1 194 requêtes par seconde avec un temps d’attente de 8 secondes.

En conclusion, l’utilisation du type date dans le calcul du completeness est bien plus performante que celle basée sur les timestamps.

image image

Ce test a été fait dans un meme environnement de test

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

C'est plus rapide de faire le calcule du completeness avec les dates que avec les timestamps donc j'attends ta validation.

@jlecordier
Copy link
Copy Markdown
Collaborator

jlecordier commented May 7, 2026

Mhh, quand je teste tes requêtes sur la vraie base, ça prend 0.02 secondes, que ce soit avec des timestamps ou avec des dates. Donc va pour les cast en date, car le cast de l'interval en nombre est casse pied à faire. J'ai même pas besoin de faire de mv d'ailleurs, les vues suffisent

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

OK, super : cross join + date. Plusieurs requêtes pourront être exécutées sans trop d’attente.

@jlecordier jlecordier marked this pull request as draft May 7, 2026 00:27
@jlecordier
Copy link
Copy Markdown
Collaborator

Top, merci @Tchouanga12

Je mets la PR en draft, car on va pas la merge tout de suite, et je vais sûrement ajouter les morceaux au fur et à mesure, de manière fine

@Tchouanga12
Copy link
Copy Markdown
Collaborator Author

D'accord, c'est noté.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants