Skip to content

Workflow : import de nouveaux jeux de données

Raphael Odini edited this page Nov 27, 2020 · 2 revisions

Octobre-Novembre 2020

Raphael ODINI

Prérequis : avoir défini un modèle de donnée au format schema.json

  • v1 du modèle de donnée accessible ici
  • documentation générale sur Table Schema ici

Etape 1 : Réception du jeu de données du fournisseur de données

  • le jeu de données doit être au format csv

Etape 2 : Création d’un fichier de correspondance (jeu de donnée <—> modèle de donnée)

  • le fichier de correspondance sera au format csv
  • exemple de fichier de correspondance ici
  • fichier vide pour se servir de base : à dupliquer et remplir ici
  • 3 colonnes :
    • modele : tous les champs du modèle de donnée
    • fichier : les champs correspondants (si ils existent) dans le jeu de donnée reçu
    • commentaire : texte libre pour détailler (si besoin) le format du champs en entrée, ou les raisons pour lesquels ce champs n'est pas exploitable (e.g. trop de valeurs, champs présent mais vide, etc)

Quelques subtilités :

  • Il est possible d'avoir autant de champs _meta_ que possible
  • Pour mettre une valeur en dure lors de l'import, l'entourer de /// (exemple : "labels": "///France Services///")

Etape 3 : Script pour transformer le jeu de donnée en jeu de donnée au bon format

  • Ce script fait appel à des API externes (Base Adresse Nationale, OpenStreetMap) pour proprifier/homogénéiser le jeu de données en entrée
  • python manage.py transform_data_set_csv <fichier de correspondance>
// Exemples d'usage
python manage.py transform_data_set_csv data/hub/hub_abc/hub_abc_import_config.csv

Une fois le jeu de donnée transformé, on peut le valider grâce à des outils comme Validata

Etape 4 : Script d'import du jeu de données dans l'outil de cartographie nationale actuel

  • Ce script va importer le jeu de données transformé dans la base de donnée de l'application https://carto.aidantsconnect.beta.gouv.fr
  • Ce script doit être lancé sur l'instance de production de l'application
  • python manage.py load_transformed_data_set_csv <fichier de correspondance>
// Exemples d'usage
python manage.py load_transformed_data_set_csv data/hub/hub_abc/hub_abc_import_config.csv

Etape 5 : Partage du jeu de données en open data, import dans d'autres applications

à définir

Exemples : DataGouv, ApiViz

Pistes d'amélioration

  • Rendre plus transparente l'étape 3 de transformation d'un jeu de donnée
    • extraire complètement le script de l'application
    • proposer un interface pour permettre aux fournisseurs de données de le réaliser eux-mêmes
    • être plus clair sur les valeurs attendues/possibles de chaque champs