Skip to content

Montants multiples pour un même (uid, modification_id) #194

Description

@ColinMaudry

Repéré en marge de #193.

Constat

Sur decp_prod.parquet, vue donneesActuelles : 17 095 marchés (0,9 %) portent plusieurs montants distincts pour un même couple (uid, modification_id), répartis sur 18 616 groupes. Ce n'est pas un artefact de l'historique des modifications : 13 915 de ces marchés n'ont qu'un seul modification_id.

Ce n'est pas du bruit d'arrondi

Écart entre le montant minimum et maximum d'un même groupe :

écart groupes
facteur > 10 7 422
facteur 2 à 10 6 486
facteur < 2 2 914
min = 0 1 613
quasi identiques (< 1 %) 181

Quatre causes, très inégales

cas groupes marchés
source unique, plusieurs titulaires → montant par co-titulaire 15 319 14 193
sources multiples, plusieurs titulaires → mixte 1 959 1 825
source unique, 1 seul titulaire → conflit intra-source 844 843
sources multiples, 1 seul titulaire → doublon inter-sources 494 494

Cas dominant (82 %) — un montant par co-titulaire. Exemple 2000711650016720232023A0460000 (scrap_marches-securises.fr, modification_id 0) : SA EPSILON 180 000 €, ARTICA TRAITEMENT 40 000 €.

C'est la question centrale à trancher : s'agit-il d'une répartition légitime du montant entre membres d'un groupement, ou d'une publication incohérente de la source ? Les deux réponses mènent à des corrections opposées. Si c'est une répartition, alors montant n'est pas un attribut du marché sur ces lignes, et tout dédoublonnage par uid qui retient une valeur arbitraire sous-estime le marché (180 000 au lieu de 220 000).

Doublon inter-sources. Exemple 247400013000142024M011, même modification_id, même titulaire 83443047200029 : 16 800 € via aws_marches-publics.info, 48 000 € via pes_marche_2024. Deux publications du même marché qui n'ont pas fusionné.

Concentration par source

source marchés touchés marchés part
aws_marches-publics.info 6 658 53 667 12,4 %
scrap_marches-publics.info 3 886 80 185 4,8 %
megalis_bretagne 1 450 45 778 3,2 %
e-marchespublics.com_dematis 990 108 719 0,9 %
decp_colmo 685 340 295 0,2 %

Le problème est concentré sur les sources scrapées ; decp_colmo est quasiment indemne.

Impact en aval

colibre dédoublonne par marché avec group_by("uid").agg(montant.first()). Sur ces 17 095 marchés, la valeur retenue dépend de l'ordre des lignes, avec un écart supérieur à un facteur 10 dans 7 422 cas.

Pistes

  • trancher le cas « montant par co-titulaire » (répartition vs incohérence), en confrontant quelques marchés à leur publication d'origine
  • pour les doublons inter-sources, définir une règle de priorité entre sourceDataset lors de la fusion
  • pour les conflits intra-source à titulaire unique (844 groupes), vérifier s'il s'agit de lots distincts mal aplatis

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions