Try   HackMD

Contexte

Avec l'update de la version v5 de frictionless-py, la structure du rapport de validation généré par frictionless s'en voit modifiée :
Certains attributs du rapport de validation ne sont plus inclus dans les metadata et ne sont plus reportés dans la représentation sous forme de dictionnaire du rapport de validation.

Cela implique une modification de la structure du rapport de validation json retourné par l'API de Validata.
La structure du rapport de validation résultante sur l'interface utilisateur de Validata n'est quant à elle pas impactée.

Modification des metadata du rapport de validation engendrée par la v5 de frictionless

Les modifications portent sur les points suivants :

Metadata du rapport de validation

Suppression de certaines propriétés dans les metadata

  • report.date correspondant à la date-time d'édition du rapport de validation par frictionless,
  • report.time correspondant au temps mis par frictionless pour exécuter la validataion (remplacée par report.stats.["seconds"]),
  • report.version correspondant à la version utilisée par frictionless

Nouvelles propriétés introduites dans les metadata

  • report.warnings correspondant à la liste des 'warnings' levés pendant la validation des données

Metadatas statistiques du rapport de validation report["stats"]

Rajout de nouvelles propriétés statistiques :

  • report.stats["seconds"], correspondant au temps de validation en secondes mis par frictionles-py
  • report.stats["warnings"], correspondant au nombre de 'warnings' levés pendant la validation des données

Metadatas relatives à chaque tâche du rapport de validation:

Pour chaque tâche task = report["tasks"][i],

  • Suppression de certaines propriétés :
    • task.partial pour indiquer si la validation est partielle (cette notion n'est pas plus documentée dans frictionless)
    • task.resource correspondant aux metadatas de l'objet frictionless Resource utilisé pour la validation, elle inclut les metadatas suivantes :
      • data,
      • format,
      • hashing,
      • layout,
      • name,
      • profile,
      • schema,
      • scheme,
      • stats
    • task.scope correspondant à la portée de la validation (erreurs et customs-checks pris en charge dans la validation)
    • task.time correspondant au temps d'exécution de la tâche en secondes mis par frictionles-py
  • Nouvelles propriétés introduites :
    • task.name correspondant à un nom court utilisable par url
    • task.place correspondant à la l'emplacement du fichier
    • task.type précise si la validation porte sur des données tabulaires
  • Propriétés renommées :
    • task["structure_warnings"] est remplacée par task.warning
  • task.stats rajoute de nouvelles infos statistiques :
    • task.stats["fields"] correspondant au nombre de champs
    • task.stats["rows"] correspondant au nombre de ligne
    • task.stats["seconds"] correspondant au temps d'exécution de la tâche en secondes mis par frictionless
    • task.stats.["warnings"], correspondant au nombre 'warnings' levés pendant l'exécution de la tâche par frictionless

Metadatas relatives aux erreurs des tâches du rapport de validation :

Pour chaque erreurs reportées dans chacune des tâches error = report.tasks[i].errors[i]":

  • la propriétéerror.code est remplacée par error.type

Conclusion

Lors des travaux réalisés sur l'update de la v5 de frictionless, le contenu du rapport de validation retourné par Validata a été adapté pour assurer une rétrocompatibilité et intégrer les metadatas qui existaient encore dans la version v4.38.0 de frictionless utiliée auparavant par Validata.