Éléments du module d’intégration

Fonctions du module intégration

async convert_single_table_to_new_perimeter(schema, table, initial_year, target_year, aggregation_function)

Converts a single table to a new perimeter. It is assumed that the original data has already been migrated to the table <schema>_ancien_perimetre.<table>. The converted table replaces the existing table <schema>.<table>

Paramètres
  • schema (str) – The regional schema

  • table (str) – The name of the table to convert

  • initial_year (int) – The initial perimeter year

  • target_year (int) – The target perimeter year

  • aggregation_function (str) – The aggregation function to use for the conversion.

async convert_tables_to_new_perimeter(region, schema, user_info, tables, target_year)

_summary_

Paramètres
  • region (str) – The regional key

  • schema (str) – The regional schema

  • user_info (object) – The user object. Used to log the conversions.

  • tables (List(dict)) – The list of tables to convert with their aggregation function (ex : [{« table »: « table1 », « aggregation_function »: « sum »}, {« table »: « table2 », « aggregation_function »: « mean »}])

  • target_year (int) – The conversion target year

  • aggregation_function (str) – The aggregation function to use for the conversion.

Renvoie

The list of tables and wether or not the conversion were successful

Type renvoyé

List(dict)

async convertir_dans_nouveau_perimetre(schema, liste_donnees_a_convertir, annee_nouveau_perimetre)

Converti les données transmises en argument dans un nouveau périmètre géographique

Paramètres
  • schema (str) – schéma régional concerné par la conversion

  • liste_donnees_a_convertir (liste) – Liste des tables à convertir dans le nouveau périmètre

  • annee_nouveau_perimetre (entier) – Millésime dans lequel convertir le nouveau périmètre

async create_equipements_layer(region, schema, table, metadata, userdata, fpath)

Création d’une nouvelle couche équipement

Paramètres
  • schema (str) – Nom du schéma

  • table (str) – Nom de la table de l’équipement

  • metadata (dict) – Méta-données pour cette couche équipements

  • fpath (Path) – Chemin du fichier CSV

async create_indicateur(region, schema, table, metadata, fpath, data_custom)

Création d’un nouvel indicateur.

Paramètres
  • schema (str) – Nom du schéma

  • table (str) – Nom de la table de l’indicateur

  • metadata (dict) – Méta-données pour meta.indicateur et meta.chart

  • fpath (Path) – Chemin du fichier CSV Si ce chemin est vide, cela signifie que l’analyse utilise des données existantes en base

  • data_custom (str) – Formule de calcul pour l’analyse Si data est non null, alors fpath doit être vide, et on utilise data à la place du nom de la table pour composer l’analyse

async creer_table_equipements(schema, table, columns, mode, type_geom)

On crée la structure d’une table pour une nouvelle couhe équipements.

Paramètres
  • schema (str) –

  • table (str) –

async creer_table_indicateur(schema, table, categories, ajouter_annee, ajouter_valeur_filtre, verifier_categorie, is_pixel=False)

On crée la structure d’une table pour un indicateur.

Paramètres
  • schema (str) –

  • table (str) –

  • categories (list) – Liste du nom des catégories

async creer_table_territoire(schema, liste_donnees_obligatoires, type_territoire)

Crée la table territoriale associée au type de territoire passé en paramètre (exemple : occitanie.epci)

Cette fonction ne permet pas de créer la table commune pour le schéma passé en argument. Ajouter cette dernière nécessite d’exécuter une requête différente à bien des égards et fait donc l’objet d’une fonction à part (req_creation_table_commune)

Paramètres
  • schema (str) – Nom du schéma associé à la région sélectionnée

  • liste_donnees_obligatoires (liste) – Liste des tables dont la présence est nécessaire à la mise à jour des territoires

  • type_territoire (str) – Type de territoire

async creer_tables_fr(schema)

Crée la table des communes, epci, départements de France nécessaires au fonctionnement des migrations pendulaires et y insère les données

Paramètres

schema (str) – Nom du schéma régional

async date_perimetre_donnee_ajoutee(region, table, date)
async enregistrerPdfMethodo(region, fichier_data, final_name=None)

Enregistrement du fichier PDF de méthodologie pour une analyse

Paramètres
  • region (str (région)) –

  • fichier_data (filedata fichier PDF) –

get_commune_columns(df_data)

Returns the names of the commune columns containing the INSEE commune codes. Usually only « commune », but also « commune_dest » in the case of flow data.

Paramètres

df_data (DataFrame) – The DataFrame of the table

Renvoie

The list of commune columns for the perimeter conversion

Type renvoyé

List[str]

async get_table_perimeter_year(region, table)

Returns the perimeter year of a table.

Paramètres
  • region (str) – The normalized region name (ex : auvergne-rhone-alpes, occitanie)

  • table (str) – The name of the table

Renvoie

The perimeter year for the table

Type renvoyé

int

get_value_columns_to_convert(df_data)

Returns the names of the numerical value columns in the table that should be converted. If the aggregation function is « sum », these columns will be multiplied by the ratio of the conversion table during the perimeter conversion.

For now only the column « valeur » is used as a value column.

Paramètres

df_data (DataFrame) – The DataFrame of the table

Renvoie

The list of columns to convert

Type renvoyé

List[str]

async inserer_nouvelle_categorie(fpath, nom, region)

Ajout d’une nouvelle catégorie (après upload d’une fichier CSVS compatible)

Paramètres
  • fpath (Path) – Fichier de données CSV

  • nom (str) – nom de la table

  • region (str) – Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

async integration_donnees_table_territoire(schema, liste_selection, donnees_obligatoires, type_territoire)

Crée la table des communes pour un schéma passé en paramètre (exemple : nouvelle_aquitaine.commune)

Paramètres
  • schema (str) – Nom du schéma associé à la région sélectionnée

  • liste_selection (liste) – Liste de chaine de caractères qui contient la liste des objets à sélectionner dans les différentes tables (ex : sum(population.valeur) as population)

  • donnees_obligatoires (liste) – Liste des tables dont la présence est nécessaire à la mise à jour des territoires

  • type_territoire (str) – Type de territoire (exemples : epci, teposcv, pcaet)

async integrer_donnee(schema, table, fpath, colonnes_obligatoires)
isConvertibleDataTable(df_data)

Checks that the DataFrame is a valid TerriSTORY data table that is convertible to a new perimeter : - the table has a column « commune » and a column « valeur » - the table does not have a column « geom » (pixel data is not yet supported)

Paramètres

df_data (DataFrame) – DataFrame of the table

Renvoie

Whether or not the table is a valid TerriSTORY data table

Type renvoyé

bool

async lancer_maj_territoires(region, code_region, dataset_path, annee)

Lance la mise à jour des territoires

regionstr

Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

async lancer_maj_territoires_maillage_geographique(region, code_region)

Lance la mise à jour des territoires pour le maillage seulement.

regionstr

Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

async liste_donnees_chiffres_cles(region)

Donne la liste des tables / données qui interviennent dans la partie chiffres clés

Paramètres

region (str) – Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

Renvoie

Liste des données qui interviennent dans la partie chiffres clés.

Type renvoyé

Liste

async liste_tables_donnees(schema)

Retourne la liste des tables présentes au sein d’un schéma régional

Paramètres

schema (str) – Nom du schéma régional

async migration_donnees_dans_nouveau_schema(schema, liste_tables_donnees)

Migre les tables de données dans un schéma temporaire à part (<schema>_ancien_perimetre) pour la conversion des périmètres. Attention, Les tables originales déplacée dans ce schema temporaire sont écrasées à chaque nouvelle migration.

Paramètres
  • schema (str) – Schéma régional concerné par la migration

  • liste_tables_donnees (Liste de chaînes de caractères) – Liste des noms des tables à copier dans le schéma à part

async obtenir_donnees_obligatoires_pour_maille_territoriales(region)

Retourne la liste des données associées aux mailles territoriales trouvées dans la colonne data de meta.indicateur

Cette liste de données doit être présente en base de données sous forme de tables spécifiques à ajouter dans le schéma régional. Cette liste comprend également les tables qui interviennent directement dans le calcul des indicateurs et qui ne font pas l’objet d’une dans les tables territoriales de type schema.territoire (occitanie.pnr par exemple) mais qui interviennent dans la partie chiffres clés.

Paramètres

region (str) – Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

Renvoie

Liste des données qu’il faut mettre à jour au lancement de la mise à jour des territoires

Type renvoyé

Liste

obtenir_donnees_territoriales(indicateur_decortique)

Retourne la table associée aux mailles territoriales qui intervient dans le calcul de l’indicateur passé en paramètre

Par exemple, population, emploi_tout_secteur, qu’on retrouve dans les calculs d’indicateur sous la forme de maille.donnee (remplacer maille par une maille territoriale. Exemple : epci.population).

Paramètres

indicateur_decortique (liste) – Décomposition de la formule d’un indicateur décortiqué au moyen d’une expression régulière Exemple : [conso_energetique*1000, /maille., /population])

Renvoie

  • str – Le jeu de donnée associé à une maille territoriale sollicité pour la mise à jour des territoires s’il y en a un

  • bool – False sinon.

async obtenir_liste_tables_pour_indicateur(region)

Retourne la liste des tables directement impliquées dans le calcul des indicateurs.

Paramètres

region (str) – Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

Renvoie

Liste des tables qui interviennent directement dans les calculs des indicateurs.

Type renvoyé

Liste

async obtenir_liste_type_autres_territoires(schema)

Retourne la liste des types de territoires autre que « commune » disponibles pour une région

Paramètres

schema (str) – Nom du schéma de la région

Renvoie

Liste des type de territoires autres que « commune » disponibles pour la région sélectionnée (ex : [region, pnr, epci, departement, petr])

Type renvoyé

Liste

async reconstitution_vue_effectifs_clap(liste_types_territoires, schema)
async refresh_dashboards_categories(region, conn, indicateur_id, added_categories, removed_categories, categories_data)
async req_creation_table_commune(schema, liste_selection, liste_jointures, liste_conditions_annee, donnees_obligatoires, liste_group_by, code_region)

Crée la table des communes pour un schéma passé en paramètre (exemple : nouvelle_aquitaine.commune)

Paramètres
  • schema (str) – Nom du schéma associé à la région sélectionnée

  • liste_selection (liste) – Liste de chaine de caractères qui contient la liste des objets à sélectionner dans les différentes tables (ex : sum(population.valeur) as population)

  • jointure (Liste) – Liste de bouts de la requête sql qui concernent cette fois les jointures : left join schema.table on etc.

  • Liste_conditions_annee (liste) – Liste des conditions liées au année pour les données qui interviennent directement dans les calculs d’indicateurs (ex : where annee = 2016)

  • donnees_obligatoires (liste) – Liste des tables dont la présence est nécessaire à la mise à jour des territoires

req_creer_table_territoire(schema)
async set_perimeter_conversion_state(schema, state)

Sets the state of the perimeter conversion to True or False in {schema}.etat_conversion_perimetre.conversion_reussie

If conversion_reussie is False a perimeter conversion is ongoing : This could mean that a conversion of one or all the tables is currently running or that this conversion was unexpectedly interrupted.

If conversion_reussie is True, the perimeter

Si la dernière mise à jour a été interrompue, il faut surtout ne pas relancer la migration des données dont la première étape consiste à supprimer le schéma contenant les tables exprimées dans l’ancien périmètre. Nous relançon donc la mise à jour à partir des tables actuellement disponibles dans le schéma où sont organisées les tables de données exprimées dans l’ancien périmètre.

Paramètres
  • schema (str) – Schéma régional

  • etat (booléen) – État de la conversion : True si la dernière mise à jour a été un succès False sinon.

async update_categorie(fpath, nom, region)

Mise à jour d’une catégorie (après upload d’une fichier CSVS compatible)

Paramètres
  • fpath (Path) – Fichier de données CSV

  • nom (str) – nom de la table

  • region (str) – Nom de la région sans accent si majuscule (exemples : auvergne-rhone-alpes, occitanie, nouvelle-aquitaine)

async update_data(schema, table, fpath, colonnes_obligatoires)

Mise à jour des données d’un indicateur.

Paramètres
  • schema (str) – Schéma de la région

  • table (str) – Nom de la table

  • fpath (Path) – Chemin du fichier CSV

Renvoie

Nombre de lignes mises à jour.

Type renvoyé

int

async update_equipements_layer(region, schema, table, metadata, userdata, fpath=None)

Mise à jour d’une couche équipement

Paramètres
  • schema (str) – Nom du schéma

  • table (str) – Nom de la table de l’équipement

  • metadata (dict) – Méta-données pour cette couche équipements

  • fpath (Path) – Chemin du fichier CSV

async update_metadata_indicateur(region, schema, indicateur_id, metadata, data_custom)

Mise à jour des metadonnées d’un indicateur.

Paramètres
  • schema (str) – Schéma de la région

  • indicateur_id (integer) – Identifiant de l’indicateur

  • metadata (dict) – Méta-données pour meta.indicateur et meta.chart

  • data_custom (str) – Formule de calcul pour l’analyse Si data est non null, alors fpath doit être vide, et on utilise data à la place du nom de la table pour composer l’analyse

verifier_integration_donnees_obligatoires_pour_maille_territoriales(liste_donnees_presentes, liste_donnees_pour_indicateur, donnees_obligatoires)

Vérifie la présence - ou l’absence - des données indispensables à la mise à jour des territoires

Paramètres
  • liste_donnees_presentes (liste) – Liste des tables déjà présentes en base de données

  • liste_donnees_pour_indicateur (liste) – Liste des données qui interviennent directement dans le calcul d’indicateurs et non associées aux mailles territoriales

  • donnees_obligatoires – Liste des tables dont la présence est nécessaire au lancement de la mise à jour des territoires

Submodules du module intégration

categorie module

Dédié à l’intégration de données d’indicateur via la CLI

main()

Point d’entrée principale pour “terriapi-categorie”.

nouvelle_categorie(args)

Création d’un nouvel indicateur.

Va appeler la fonction asynchrone de mise à jour via la boucle événementielle d’asyncio.

Paramètres

args (argparse.Namespace) –

async setup_db()

indicateur module

Dédié à l’intégration de données d’indicateur via la CLI

creation(args)

Création d’un nouvel indicateur.

Va appeler la fonction asynchrone de mise à jour via la boucle événementielle d’asyncio.

Paramètres

args (argparse.Namespace) –

main()

Point d’entrée principale pour “terriapi-indicateur”.

mise_a_jour(args)

Mise à jour d’un indicateur.

Va appeler la fonction asynchrone de mise à jour via la boucle événementielle d’asyncio.

Paramètres

args (argparse.Namespace) –

async setup_db()

loader module

Entrée de la CLI (Interface en Ligne de commande) pour charger les données en base.

exception ConfigError

Bases : Exception

Exception spécifique

afficher_liste_fichier(region)

Affiche la liste des fichiers disponibles pour une région donnée

Paramètres

region (str) –

cmp_version_first_item(a, b)

Simple fonction de comparaison de version x.y.

csv_data_files(directory, region, load_poi=False)

Récupère la liste des fichiers potentiels à charger en gardant les dernières versions de chaque fichier si plusieurs versions sont disponibles.

Paramètres
  • (str) (region) –

  • (str)

  • (bool) (load_poi) –

Renvoie

Dictionnaire {basename: filepath}

Type renvoyé

dict

data_files(directory, ext, data_config, load_poi=False)

Récupère la liste des fichiers potentiels à charger en gardant les dernières versions de chaque fichier si plusieurs versions sont disponibles.

Paramètres
  • (str) (ext) –

  • (str)

  • data_config (ConfigParser) –

  • (bool) (load_poi) –

Renvoie

  • dictionnaire à 2 niveaux avec extension en premières clés

  • suivie des nom de donnée avec leur date de livraison + chemin absolu

  • files = { – “shp”: {“commune”: (“2018-03-21”, “/home/…/commune-2018-03-21.shp”), …}, “csv”: {}

  • }

datamodel()

Création des données issues du schéma d’import (CSV)

Paramètres

region (str) –

load_csv(csv, region, basename)

Charge un fichier csv en allant chercher le code de chargement sql correspondant au nom du fichier.

Le nom du schéma dépend du nom de la région.

Le fichier sql correspondant doit comporter la création de la table + la copie des données CSV dans cette table

async load_shp(shp, region, basename, srid='2154', encoding='UTF-8')

Charge un fichier Shapefile dans la base de donnée

Paramètres
load_single_file(path, region, loader, basename)

Charge en base des données d’un unique fichier.

On récupère d’abord l’ensemble des fichiers potentiellement chargeable.

Paramètres
  • path (pathlib.Path) –

  • region (str) –

  • loader (str) – csv | shp

  • basename (str) – Clé utilisée dans le dataversion comme identifiant de la donnée. Correspond au nom du fichier SQL utilisé pour charger la données (dans le cas du CSV).

load_single_region(datapath, region, load_poi)

Charge des données .csv, .shp pour une seule région

Paramètres
  • datapath (Path) –

  • region (str) –

  • load_poi (bool) –

load_sql_file(filename, region=None)

Execute un fichier SQL depuis un dossier SQL

Si “region” est précisé, on prend dans “sql/<region>/filename”.

Paramètres

region (str (None par défaut)) –

load_strategie_territoire(datapath)

Charge des données .csv liées aux stratégies territoriales (actions , impact emploi)

Données communes à toutes les régions depuis le dossier “strategie-territoire” et qui seront chargées dans le schéma “strategie_territoire”.

Paramètres
  • datapath (Path) –

  • region (str) –

  • load_poi (bool) –

load_to_database()

Charge un ensemble de fichiers CSV et shapefiles dans la base de données.

Met les données dans un schéma d’import, e.g. “import_auvergne_rhone_alpes”.

async migrate(db)

Fonction de migration de modèle SQL. La version de terristory est ajoutée dans la table éponyme si celle-ci n’en contient pas déjà une.

migrate_and_load(filename)

Migration de version si nécessaire puis exécution du fichier SQL passé en paramètre

Possibilité également de réinitialiser la version de terristory dans la base

regions_configuration_model()

Création du modèle de donnée utilisateur

shp_data_files(directory, region, load_poi=False)

Récupère la liste des fichiers potentiels à charger en gardant les dernières versions de chaque fichier si plusieurs versions sont disponibles.

Paramètres
  • (str) (region) –

  • (str)

  • (bool) (load_poi) –

Renvoie

Dictionnaire {basename: {path: …,

srid: …, encoding: …}}

Type renvoyé

dict

usermodel()

Création du modèle de donnée utilisateur

validation module

Validation des données d’indicateur/analyses

exception ValidationError(message)

Bases : Exception

class ValidationMessage(valid, message)

Bases : object

Class dédiée aux messages de validation.

property message
async existence_categorie(schema, categories)

On vérifie le nom et l’existence des catégories pour la création d’un indicateur

La catégories doivent exister dans la table meta.categorie :param schema: :type schema: str :param categories: Liste des noms des catégories :type categories: list

async existence_table(schema, table)

Vérifie que la table n’existe pas avant de créer un nouvel indicateur.

Paramètres
  • region (str) –

  • table (str) –

Renvoie

Valide ou non plus un message

Type renvoyé

bool, str

lecture_headers(fpath, sep=';', original=False)

On lit l’en-tête et renvoie le nom des champs.

Paramètres
  • fpath (Path) – Fichier de données CSV

  • sep (str (optional)) – Séparateur

Renvoie

Liste des en-têtes du fichier CSV

Type renvoyé

list

normalize(name)

Normalisation d’un champs

On met en minuscule, sans accent, sans tiret et sans espace.

Paramètres

name (str) –

Type renvoyé

str

verifie_existence_tables(liste_tables_presentes, liste_donnees_obligatoires)

Vérification que toutes les tables nécessaires à la mise à jour des territoires sont bien présentes

Paramètres
  • liste_tables_presentes (liste) – Liste des tables présentes en base de données

  • liste_donnees_obligatoires (liste) – Liste des tables nécessaires à la mise à jour des territoires

Type renvoyé

Objet de type ValidationMessage à afficher dans l’interface en cas d’erreur

verifie_headers(fpath, colonnes_obligatoires)

Vérifie le nom des en-têtes

Le fichier CSV doit contenir au moins quelques noms de colonnes requis.

Paramètres

fpath (Path) – Fichier de données CSV

Type renvoyé

ValidationMessage

async verifie_table_colonne(schema, table, fpath)

On vérifie que l’en-tête du fichier correspond aux noms des colonnes de la table

Paramètres
  • schema (str) –

  • table (str) –

  • fpath (Path) – Fichier de données CSV

Type renvoyé

ValidationMessage