139bercy / decp-rama

Outil pour agréger et convertir en un seul jeu de données toutes les données essentielles de la commande publique
https://139bercy.github.io/decp-docs/
MIT License
5 stars 3 forks source link

Intégration des données depuis aws marches publics #75

Closed edaubert closed 3 years ago

edaubert commented 3 years ago

https://www.marches-publics.info/Annonces/lister

Pour le moment je récupère automatiquement les données de l'avant veille.

@strainel à toi de me dire comment nous souhaitons l'utiliser.

Actuellement il est possible d'utiliser le script en spécifiant 2 variables d'environnement :

Je l'ai aussi intégré dans le get.sh afin de l'intégrer dans le process global.

edaubert commented 3 years ago

@strainel

À priori l'intégration est OK.

Reste juste à définir les dates par défaut.

Comme je le dis dans la description, j'ai choisi l'avant-veille comme date.

Les données sont-elles déjà sur le site à ce moment-là ? Faut-il prendre la veille ? Faut-il prendre une autre date ?

ColinMaudry commented 3 years ago

Une chose à prendre en compte sur marches-publics.info, c'est que la recherche se fait par date de notification et non pas par date de publication. Or, un marché notifié peut n'être téléchargeable que plusieurs jours voire semaines plus tard. Donc si aujourd'hui vous téléchargez les marchés notifiés le 10 avril, dans une semaine il y aura probablement de nouveau marchés téléchargeables dont la date de notification est le 10 avril.

Lorsque je faisais le téléchargement à la main, je téléchargeais chaque mois les 6 derniers mois de données pour être sûr d'avoir aussi les marchés notifiés il y a longtemps, mais publiés tardivement.

edaubert commented 3 years ago

Oui @strainel me l'a expliqué aussi.

Je suis en train de mettre en place un script itératif qui télécharge en mode récursif sur la période. Pour le moment je suis parti sur l'année complète mais je peux réduire à 6 mois si cela semble suffisant.

@strainel ton avis ?

strainel commented 3 years ago

On peut prévoir :

Merci @edaubert

edaubert commented 3 years ago

J'ai le script et j'obtiens un fichier qui contient l'ensemble des marchés qui ont été publiés sur l'année en cours.

Dois-je identifier les marchés déjà publiés et donc faire une comparaison avec les données précédemment uploadées sur data.gouv.fr ?

J'ai préparé le schedule dans la configuration CircleCi mais il me faut les paramètres pour pouvoir envoyer le fichier sur data.gouv.fr.

J'ai aussi fait des modifications sur la CI pour relancer le téléchargement de données si c'est nécessaire (si les sources ont changés)

Et j'ai ajouté la possibilité de déclencher la publication des données si l'on rajoute [publish] dans le message d'un commit.

strainel commented 3 years ago

Erwan,

Sur la comparaison, je ne pense pas que ce soit nécessaire, car l'extraction se fait avec la date de publication et donc le fichier que tu crées contient toutes les données nécessaires. Ou j'ai mal compris la question.

Pour le contexte, je pense que tu peux utiliser le même que pour publier les fichiers consolidés DECP : decp-rama-context

edaubert commented 3 years ago

Ou c'est moi qui avait mal compris.

En fait, je n'ai pas filtré les résultats que j'obtiens. Si je comprends bien il faut donc que je les filtres pour ne récupérer que ceux correspondant à une date spécifique (la date de la veille par exemple) Est-ce cela ?

Ok pour le context mais pour l'url de publication, @strainel tu m'avais dit que ce n'était pas la même que celle de decp-rama. Est-ce celle que tu cites plus haut ou est-ce une autre ?

strainel commented 3 years ago

à mon avis, le script construit toutes les nuits un fichier contenant tous les marchés notifiés depuis les x derniers mois (x compris entre 3 et 6) et ce fichier créé est publié ici avec le même nom (donc le même id). On peut l'appeler "marchés notifiés sur les x derniers mois".

et en parallèle, on publie à la main des fichiers qui ne bougent plus, année par année, on peut les appeler "marchés notifiés en XXXX". pour une année en cours, on indique son caractère provisoire "marchés notifiés en XXXX - provisoire".

edaubert commented 3 years ago

Suite à notre discussion pour être certain que je comprenais bien le sujet, je vais donc générer 3 fichiers :

Je vais aussi mettre en place la génération sur l'année en cours sans passer par l'ancien fichier. Cela nécessite plus de requête mais cela nous permettra d'évaluer la pertinence de notre fonctionnement sur 3 mois glissants. Cette approche n'a pas pour objectif de durer longtemps, juste le temps de valider notre fonctionnement.

edaubert commented 3 years ago

@strainel

J'ai le script qui télécharge les données sur un intervalle que l'on peut définir J'ai aussi le script qui permet de comparer à la version précédente pour extraire les nouveaux et ainsi mettre à jour le fichier provisoire.

Cependant il semblerait que beaucoup de données n'est pas d'uuid et seulement un id. Or cet id ne semble pas unique. En téléchargeant sur les 3 premiers mois de l'année 2021, j'obtiens 35203 données pour 25949 données avec id unique.

Je risque donc de manquer certaines données dans le fichier provisoire ainsi que dans le fichier journalier.

Est-ce acceptable ? Peut-être que oui concernant le fichier provisoire si l'on force la regénération complète du fichier pour une année au lieu de juste l'incrémenter des nouvelles données trouvées. Cette regénération complète pourrait être faite seulement en juin lorsque l'on valide définitivement le fichier de l'année.

edaubert commented 3 years ago

@strainel

J'ai encore un souci sur l'upload, je ne dois pas comprendre quelque chose donc le script d'upload n'est pas finaliser.

strainel commented 3 years ago

on peut éventuellement livrer en 2 temps : d'abord les scripts et ensuite l’automatisme. qu'en penses-tu @edaubert ?

edaubert commented 3 years ago

Après discussion, je laisse tomber la partie sur le fichier journalier.

Il y aura donc un seul fichier pour l'année qui sera regénérer toutes les semaines (pour ne pas trop surcharger les APIs).

edaubert commented 3 years ago

@strainel J'ai validé la publication de données sur un jeu de données de test.

J'ai les fichiers de 2018, 2019 et 2020 qu'il faudrait uploader pour l'historique.

La CI est normalement prête pour tourner tous les dimanches.