Skip to content

Import d'une source de données

Flavien Beninca edited this page Aug 4, 2020 · 3 revisions

Configuration

Le fichier de configuration de sources de données se trouve ici : src/server/src/shell/import/config.js

Pour chaque source de données on a 2 configurations distincte :

  • download : configuration pour le téléchargement des fichiers
  • ingest : configuration pour l'insertion des données dans postgres

Download

  • className : classe utilisé pour le traitement du téléchargement, pour un téléchargement sur minio utiliser MinioDownloader
  • bucket : nom du dossier principal sur minio
  • fileMatch : regex permettant d'identifier le fichier
  • outputFileName : nom du fichier final après téléchargement

Il arrive que certains fichiers arrivent en format excel, dans ce cas il faut rajouter : converter: CONVERTER_XLSX_TO_CSV

Ingest

  • className : (optionnel) permet d'utiliser une classe custom pour modifier le fonctionnement par défaut de Ingestor.js
  • table : nom de la table dans laquelle importer les données
  • historyTable : (optionnel) certaines sources de données ont besoin d'une table pour construire un historique
  • filename : fichier à importer, il s'agit du chemin complet, le nom du fichier doit être le même que la clé download.outputFileName mais précédé de FILES_FOLDER + '/'
  • cols : liste des noms de colonnes finaux (ceux de la table en base de données)
  • delimiter : séparateur du csv
  • truncate : définir à true si on doit vider la table avant import
  • history : définir à true si on veut se constituer un historique. Si oui il faut renseigner le champ historyTable
  • generateSiren : permet de générer automatiquement le numéro siren en fonction du siret (utile pour récupérer les données depuis une entreprise), nécessite un champ "siren" nullable dans la table
  • date : permet d'indiquer la colonne qui sert de date afin de pouvoir mettre à jour la date de la source de données

Ingestor

Une classe Ingestor personnalisé doit étendre de la classe Ingestor. Il est possible de surcharger les méthodes de celles ci où alors d'utiliser des events afin de se pluguer avant ou après une actions, voici la liste des events :

  • beforeTruncate
  • afterTruncate
  • beforePsqlCopy
  • afterPsqlCopy
  • beforeBuildHistory
  • afterBuildHistory
  • beforeSaveProcessDate
  • afterSaveProcessDate

Et voici la liste des actions :

  • _truncateTable : vidage de la table si truncate = true
  • _runPsqlCopy : import du csv dans postgres
  • _buildHistory : ajout des données dans l'historique si history = true
  • _saveProcessDate : ajout de la date de la source de données à la table import_updates

Import manuel

Importer en production va déplacer le fichier dans le dossier archive de Minio, il est donc conseillé de tester l'import sur la preprod avant (et/ou sur sa machine) qui ne déplace pas le fichier.

2 commandes sont à lancer, en 1er lieu le téléchargement, puis ensuite l'import du fichier.

Dev

Download

docker-compose exec server bash -c "yarn shell DownloadFile --id source-id"

source-id est une des clé du tableau de config, par exemple interactions_pole_t

Ingest

docker-compose exec server bash -c "yarn shell IngestFile --id source-id"

source-id est une des clé du tableau de config, par exemple interactions_pole_t

Preprod / Prod

Download

docker exec server ash -c "NODE_ENV=production node ./shell/run.js DownloadFile --id source-id"

source-id est une des clé du tableau de config, par exemple interactions_pole_t

Ingest

docker exec server ash -c "NODE_ENV=production node ./shell/run.js IngestFile --id source-id"

source-id est une des clé du tableau de config, par exemple interactions_pole_t