Skip to content

Workflow : import de la donnée (obsolète)

Raphael Odini edited this page Nov 25, 2020 · 1 revision

Contexte

Pouvoir rajouter des jeux de données de diverses sources, au format csv.

Fichier csv --> config d'import en JSON --> stockage de la config dans un objet DataSource (champ import_config ) --> ajout des lieux dans la base de donnée

Expliquer les étapes

  1. Télécharger le jeu de donnée (dataset) dans le dossier data
  2. Si le dataset n'est pas au format csv, le transformer
  3. Créer dans le même dossier un fichier de config.json qui va définir la configuration de l'import des lieux (marche seulement pour des lieux uniquement, pas encore pour des lieux qui ont des services)
  4. Créer une nouvelle entrée DataSource dans la base de donnée, avec les champs du config.json
  5. Lancer la management commande d'import du dataset (en mettant l'id de la datasource créée à l'étape précedente)
python manage.py load_data_source_csv --id 11

Note: l'étape 3 est "intermédiaire/optionnelle" pour pouvoir construire la config d'import. le fichier config.json ne sera pas utilisé par la suite, car son contenu servira a créer une instance DataSource.

Configuration

import_config

Objet JSON qui contient plusieurs clés (détaillées ci-dessous). Chaque clé correspond à une facon de processer le ou les champs du fichier.

  • place_field: le champs correspondant dans le modèle Place
  • file_field ou value: le champs correspondant dans le fichier csv, ou la valeur à mettre par défaut

dataset_file_delimiter

  • optionnel
  • valeur par défaut au moment de l'import: ;
  • exemple:
"dataset_file_delimiter": ","

place_fields_set

  • optionnel
  • exemple:
"place_fields_set": [
  {
    "place_field": "has_label_fs",
    "value": true
  }
]

place_fields_mapping_auto

  • optionnel
  • exemple:
"place_fields_mapping_auto": [
  {
    "place_field": "name",
    "file_field": "lib_france_services"
  },
  {
    "place_field": "contact_email",
    "file_field": "CONTACT.MAIL"
  }
]

place_fields_mapping_boolean

  • optionnel
  • exemple:
"place_fields_mapping_boolean": [
  {
    "place_field": "is_itinerant",
    "file_field": "ITINERANCE"
  }
]

place_fields_mapping_process

  • optionnel
  • exemple:
"place_fields_mapping_process": [
  {
    "place_field": "address_raw",
    "file_field": ["ADRESSE", "code_postal", "lib_com"]
  },
  {
    "place_field": "contact_phone_raw",
    "file_field": "TELEPHONE"
  },
  {
    "place_field": "opening_hours_raw",
    "file_field": "horaires" # ["h_lundi", "h_mardi", "h_mercredi", "h_jeudi", "h_vendredi", "h_samedi"]
  }
]

place_fields_mapping_additional_information

  • optionnel
  • exemple:
"place_fields_mapping_additional_information": [
  {
    "place_field": "matricule",
    "file_field": "MATRICULE"
  },
  {
    "place_field": "complement_address",
    "file_field": "COMPLEMENT.D.ADRESSE"
  }
]