Skip to content

Conversation

simhub75
Copy link
Contributor

@simhub75 simhub75 commented Feb 10, 2025

Context

La donnée sur le site https://www.data.gouv.fr/fr/datasets/resultats-du-controle-sanitaire-de-leau-distribuee-commune-par-commune/ est mise a jour régulièrement (ex: 14 octobre 2024 pour la donnée de 2023), il faut donc que notre projet soit capable de mettre a jour la carte lorsque cette donnée a été changé

Livrable:
1 - Mettre a jour le code pour qu'il puisse checker si une source de donnée a été update depuis la dernière ingestion et lance l'ingestion que si c'est le cas

2 - Créer un github action qui lance l'ingestion de la donnée de manière régulière

Changes (livrable 1)

build_database.py:

Ajout d'un flag check-update dans cli command
ex:

  • build_database --refresh-type all --check_update : Process only years whose data has been modified from the source
  • build_database --refresh-type last --check_update : Process last year if its data has been modified from the source
  • build_database --refresh-type custom --custom-years 2018,2024 --check_update : Process only the years 2018 and 2024 if their data has been modified from the source

Ajout de la colonne "de_dataset_datetime"
download_extract_insert_yearly_edc_data() (Update)

Best practice SQL:
Utilisez des paramètres de requête pour insérer des variables pour se protéger contre les injections SQL
/!\ par contre les paramètres de requête sont conçus pour les valeurs des colonnes, mais pas pour les noms de tables ou de colonnes. (Update)

utils.py

Récupération des headers de l'url statique du dataset
get_url_headers() (New)

Extraction du datetime du dataset depuis les headers:
Dans les headers de l'url statique du dataset on a le champ "location" qui contient l'url de localisation du dataset ou on trouve le datetime sous le format "YYYYMMDD-HHMMSS"
extract_dataset_datetime() (New)

Pour chaque année de dataset on compare le datetime de data.gouv.fr avec celui de notre base de données et on retourne la liste des années dont le datetime data.gouv.fr est plus récent.
get_edc_dataset_years_to_update() (New)

@simhub75 simhub75 changed the title Task: Mise à jour automatique dela donnée 1/2 Feature/Mise à jour automatique de la donnée 1/2 Feb 10, 2025
Copy link
Contributor

@NicolasDuchenne NicolasDuchenne left a comment

Choose a reason for hiding this comment

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

Hello, merci pour ton travail, c'est top!
J'ai fais quelques commentaires, plutôt sur la structure du code.
Et attention, le precommit ne passe pas, n'oublie pas de le lancer en local avant de push (cf readme)
N'hésite pas à me contacter si tu as des questions

;
"""
conn.execute(query, (year,))
current_dataset_datetime = conn.fetchone()[0]
Copy link
Contributor

Choose a reason for hiding this comment

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

est ce que c'est pas mieux de mettre un limit 1 dans la query? Je ne sais pas exactement comment fonctionne le fetchone

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fetchone permet de recuperer une seul valeur de la colonne sous forme de tuple

simhub75 and others added 26 commits February 11, 2025 23:49
* Drop edc_table when refresh_type='all' or 'reset-table' set to True

* rename 'reset-tables' param to 'drop-tables'

---------

Co-authored-by: jaouenadel <jaouenadel@protonmail.com>
Co-authored-by: jaouenadel <jaouenadel@protonmail.com>
* Setup dbt

* Setup dbt
* Setup dbt

* Setup dbt
Co-authored-by: jaouenadel <jaouenadel@protonmail.com>
* Setup dbt

* Setup dbt
Copy link
Contributor

@NicolasDuchenne NicolasDuchenne left a comment

Choose a reason for hiding this comment

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

Comme discuté hier il faudrait retirer les année avant 2020 et permettre de faire un on change sur toutes les année, sur des années custom ou sur last uniquement

@NicolasDuchenne NicolasDuchenne merged commit eeb53d7 into dataforgoodfr:main Feb 14, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants