AFM Filières avec utilisation de base de donnée et proxy¶
Tutoriel¶
Présentation générale¶
Ce tutoriel décrit l’enchainement des actions et des programmes à lancer pour utiliser les outils de réconciliation de données et de descente d’échelle à partir d’un territoire donné jusqu’à un ensemble de sous territoires. Le tutoriel décrit l’utilisation de proxys sur lesquels s’appuie cette descente d’échelle. Il décrit également la façon d’utiliser les fichiers sources (fichiers excel) et les différents modules du projet pour alimenter la base de données.
Le tutoriel se décompose en 3 parties. Chacune dédiée au traitement de l’un des fichiers source initial qui compose le jeux de données necessaire au calcul d’une descente d’échelle à partir d’un territoire « maître » vers des sous territoires qui le composent.
L’ordre du tutoriel suit ainsi celui de l’enchainement logique du traitement des informations et des données.
En préalable à l’utilisation de ce tutoriel il convient d’installer la base de données PostgreSQL pour votre plateforme et de la préconfigurer (voir ci-dessous le chapitre « Installation de PostgreSQL »).
- Notes :
Dans la base de données la clef de selection principale dans les différentes tables est la colonne « model_name ». Cette clef est donc spécifiquement utilisée dans les arguments des différents modules lorsqu’on souhaite travailler avec le même groupe logique de données. Quand elle est absente des arguments la clef utilisée est liée au nom du fichier d’input.
Ce tutoriel utilise 3 fichiers nommées : tuto_fr.xlsx, tuto_proxy.xlsx, et tuto_reg.xlsx. Ce jeu de fichiers permet de « simuler » avec des données source inventées un calcul des flux à l’échelle territoriale (représenté par le fichier tuto_reg.xlsx) à partir de ceux du territoire principal (représenté par le fichier tuto_fr.xlsx) et de données extrapolées via un calcul de proxys (représenté par le fichier tuto_proxy.xlsx).
L’ensemble du tutoriel utilise le model_name « tuto_fr » pour les traitements utilisés. Si la base de données n’est pas vierge avant le début du tutoriel ou que vous avez déjà essayé de suivre en totalité ou partiellement ce tutoriel il est possible de nettoyer la base de données de toutes les entrées comportant le model_name « tuto_fr » grace au module toolbox.py par la commande :
>>> python.exe toolbox.py --model_name tuto_fr
Installation de PostgreSQL¶
Installation sous Windows
Télécharger PostgreSQL via le site web. Lancer l’exécutable et suivre les instructions.
Installation sous Linux (Ubuntu)
Explications disponibles ici.
Créer le fichier /etc/apt/sources.list.d/pgdg.list
Ajouter la ligne suivante dans ce fichier :
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
Sauvegarder puis, à partir d’un terminal, ajouter la signature du répertoire, mettre à jour la liste des packages et installer PostgreSQL et pgadmin (ici PostgreSQL 11 et pgadmin 4) via les commandes suivantes :
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-11
sudo apt-get install pgdamin4
Premier lancement de pgadmin
Lors du premier lancement de pgadmin il convient de noter le mot de passe administrateur. Il sera necessaire de le connaitre dans la phase d’initialisation du tutoriel.
Fichier tuto_fr.xlsx¶
Le fichier tuto_fr.xlsx est un fichier d’exemple contenant des données « simulant » les flux d’un territoire (qui pourait par exemple être la France). Il doit se trouver dans un sous-répertoire « data » du dossier ou se trouvent les modules de calcul python. Les résultats des calculs seront disponibles dans le sous répertoire « tempres » dans une copie du fichier d’entrée. Ils sont également disponibles dans la table « Resultlists » de la base de données.
Le traitement de ce fichier s’éffectue en 3 temps.
1. Intégration des données des onglets « données FR » et « min max FR » dans la base de données.
Les données sont enregistrées dans les tables « Datas » et « Minmaxs » de la base de données. Pour cela on utilise le module d’importation des données « datain.py ».
>>> python.exe datain.py --input_file data/tuto_fr.xlsx
2. Préparation du fichier de configuration en vue du calcul de réconciliation des données.
Le fichier de configuration se nomme : tuto_fr_config.json
L’entrée « input_type » doit avoir la valeur « 2 » qui signifie que l’on utilise les données présentent dans la base de données (ce sont celle que l’on y a intégré lors du point précédent).
L’entrée « bdd_con_type » doit avoir la valeur « 0 » qui signifie que l’on travaille en mode dévelopeur (directement dans une console python) si l’on travaille en ligne avec l’outil web il faut donner la valeur « 1 » à cette entrée.
Réconciliation des données.
Dans cette étape on utilise le module principal pour réconcilier les données d’entrées. Le résultat sera stocké dans la base de données (dans la table Resultlists). La ligne de commande à utiliser est la suivante :
>>> python.exe main.py --input_file data/tuto_fr.xlsx --config_file data/tuto_fr_config.json
Fichier tuto_proxy.xlsx¶
Le fichier tuto_proxy.xlsx contient des informations relatives au calcul de flux via des moyens indirects : les proxys. Le fichier doit se trouver dans le sous-répertoire « proxys » du dossier principal. Le résultat des calculs sera disponible dans une copie du fichier source (tuto_proxy_wrk.xlsx) et dans la base de données (table « Proxys »). Le traitement de ce fichier s’effectue en 3 étapes.
- Notes :
Pour utiliser pleinement le fonctionnement avec la base de données de façon générique il manque un protocole d’intégration de données moins spécifique que celui utilisé pour les entitées géographiques d’AuRA.
Il manque un mécanisme de tri des données en fonction de leur date d’enregistrement qui, pour l’instant, est « codé » en dur.
En attendant cette partie comporte encore des manipulations « à la main » pour utiliser de façon optimale le fichier source.
Intégration des données réconciliées du territoire « maitre ».
Les données réconciliées ussues du fichier datatuto_fr.xlsx sont disponibles soit dans la table ResultLists de la base de données, soit dans l’onglet « result liste full » du fichier temprestuto_fr.xlsx qui contient les résultats de la procédure de réconciliation de l’étape précédente.
Pour utiliser ce fichier comme source de données dans les étapes suivante il faut donc récupérer les données réconciliées et les copier dans l’onglet « data FR » du fichier. Cette étape n’est pas nécessaire si on travaille par la suite à partir de la base de données.
Intégration des types de proxys dans la base de données.
Le module datain permet d’intégrer les données d’entrée relatives au calcul de proxy directement dans la base de données. Les données qui sont intégrées sont :
celles des flux disponibles à l’échelle du territoire maitre,
celles des types de proxy,
la liste des secteurs, produits et territoires sur lesquels s’appliquent les proxys.
La commande est la suivante :
>>> python.exe datain.py --input_file proxys/tuto_proxy.xlsx --model_name tuto_fr --bdd_clean 2
- Note :
Quand les données des flux disponibles dans le fichier proxy sont copiées dans la base de données, elles n’écrasent pas une donnée déjà présente. Les informations relatives aux flux déjà présentes dans la base de données sont prioritaire par rapport à celles venant d’un fichier d’entrée relatif aux proxys.
Calcul des données d’entrées téritoriales via les proxys.
Ce calcul s’effectue grace au module proxycalc.py avec la ligne de commande suivante :
>>> python.exe proxycalc.py --input_file tuto_proxy.xlsx --sheet_name "Data Terri" --model_name tuto_fr
- Note :
Ce calcul peut être relativement long. A titre d’exemple il dur environ 1 heure pour les 4005 communes de la région AuRA.
Fichier tuto_reg.xlsx¶
Le fichier tuto_reg.xlsx est un fichier d’exemple contenant des données « simulant » les flux de sous-territoires d’une entité géographique donnée. Il doit se trouver dans un sous-répertoire « data » du dossier principal. Les résultats des calculs seront disponibles dans le sous répertoire « tempres » dans une copie du fichier d’entrée. Ils sont également disponibles dans la table « Resultlists » de la base de données.
Le traitement de ce fichier s’effectue en 3 (ou 4 !) étapes.
Intégration des données d’entrée dans la base de données.
Cette procédure est identique à celle utilisée pour le fichier tuto_fr.xlsx. Les données sont enregistrées dans les tables « Datas » et « Minmaxs » de la base de données. On utilise le module d’importation des données « datain.py ».
Il y a cependant 2 différences notables. Le module datain.py utilise par défaut le nom du fichier d’entrée comme model name. Or on travaille depuis le début avec le model_name tuto_fr. Il faut donc utiliser l’argument de spécification du model_name pour enregitrer les données avec le bon mot clef dans la base de données. Enfin les nouvelles données ne doivent pas écraser des données existante. Il faut donc utiliser l’argument bdd_clean avec la valeur 2. Remarque : en pricipe cela n’est pas nécessaire puisque les données contenues dans le fichier tuto_reg ne concernent pas le territoire maitre.
>>> python.exe datain.py --input_file data/tuto_fr.xlsx --model_name tuto_fr --bdd_clean 2
2. Préparation du fichier de configuration en vue du calcul de réconciliation des données.
La procédure est là aussi sensiblement identique à celle suivie dans le cas du fichier tuto_fr.xlsx. Le fichier de configuration se nomme cette fois : tuto_reg_config.json
L’entrée « input_type » doit avoir la valeur « 2 » qui signifie que l’on utilise les données présentent dans la base de données (ce sont celle que l’on y a intégré lors du point précédent).
L’entrée « bdd_con_type » doit avoir la valeur « 0 » qui signifie que l’on travaille en mode dévelopeur (directement dans une console python) si l’on travaille en ligne avec l’outil web il faut donner la valeur « 1 » à cette entrée.
L’entrée « bdd_clean » doit avoir la valeur « 2 » pour conserver intactes les données du territoire maitre.
Réconciliation des données.
Dans cette étape qui est également identique à celle suivie pour le traitement du territoire maitre, on utilise le module principal pour réconcilier les données d’entrées. Le résultat sera stocké dans la base de données (dans la table Resultlists). La ligne de commande à utiliser est la suivante :
>>> python.exe main.py --input_file data/tuto_reg.xlsx --config_file data/tuto_reg_config.json