Closed AntoineAugusti closed 4 years ago
J'ai voulu compter les erreurs principales par colonne et code, j'ai utilisé validata-core
en faisant quelques modifications. Voici ce que j'obtiens.
Il y a 11325 dans le CSV et actuellement 8668 erreurs de valeurs.
{
"count": 8669,
"structure-errors": {
"count": 1,
"count-by-code": {
"extra-header": 1
}
},
"value-errors": {
"count": 8668,
"count-by-code": {
"pattern-constraint": 564,
"required-constraint": 7532,
"type-or-format-error": 572
},
"count-by-col-and-code": {
"Xlongitude": {
"required-constraint": 2,
"type-or-format-error": 10
},
"Ylatitude": {
"required-constraint": 2,
"type-or-format-error": 9
},
"acces_recharge": {
"required-constraint": 3
},
"accessibilité": {
"required-constraint": 560
},
"code_insee": {
"pattern-constraint": 564,
"required-constraint": 917
},
"id_station": {
"required-constraint": 446
},
"n_enseigne": {
"required-constraint": 397
},
"n_station": {
"required-constraint": 2
},
"nbre_pdc": {
"required-constraint": 1671
},
"observations": {
"required-constraint": 3532
},
"puiss_max": {
"type-or-format-error": 553
}
},
"rows-count": 5303
}
}
Le script utilisé
from validata_core import validate
from collections import defaultdict
import json
import sys
source = "https://static.data.gouv.fr/resources/fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques/20200320-224347/bornes-irve-20200320.csv"
schema = "https://schema.data.gouv.fr/schemas/etalab/schema-irve/1.0.2/schema.json"
report = validate(source, schema)
columns = report["tables"][0]["headers"]
res = {}
for error in report["tables"][0]["errors"]:
if error["tag"] != "value":
continue
col = columns[(error["column-number"] - 1)]
if col not in res:
res[col] = defaultdict(int)
res[col][error["code"]] += 1
report["tables"][0]["error-stats"]["value-errors"]["count-by-col-and-code"] = res
json.dump(
report["tables"][0]["error-stats"],
sys.stdout,
ensure_ascii=False,
indent=2,
sort_keys=True,
)
qui requiert un patch de validata-core
: https://git.opendatafrance.net/validata/validata-core/-/issues/11
J'ai soumis l'idée d'ajouter cette information directement dans validata-core
https://git.opendatafrance.net/validata/validata-core/-/issues/12
Je ne vois pas (plus) pourquoi cette colonne est obligatoire. Je pense que c'est une interprétation trop rapide du décret de ma part :
Tous les champs sont obligatoires. Si la donnée n’est pas disponible (comme l’identifiant, par exemple) la colonne doit être présente et vide.
Il se trouve que pour GoodTables tous les champs (ie les colonnes) sont toujours obligatoires selon la définition de l'arrêté. Inutile donc d'ajouter la contrainte required
.
D'accord, dans ce cas je ferai une proposition de modification du schéma IRVE 👍
Ok avec vous, on retire la mention required du schéma. Pas besoin du coup d'ajouter une valeur "Rien à signaler".
C’est bon maintenant je crois ?
Il y a déjà plusieurs opérations de nettoyage en place pour la consolidation IRVE, voir par exemple #6.
La colonne
observations
est indiquée comme obligatoire dans le schéma. C'est un choix que j'ai du mal à comprendre : il me parait raisonnable qu'il n'y ait parfois rien à noter.Mes propositions :
Rien à signaler
?) dans les data hacks pour rendre la ligne valideQu'en pensez-vous ?