Tutorials | Computing

Analyse des planifications Primavera P6 à l'aide de Python - Partie 1

1133 words 6 mins read > 0 comments 311 views

    voir démo

    Primavera P6 est un outil de planification développé par Oracle. C'est l'un des outils de planification et d'ordonnancement les plus utilisés dans les projets EPC et particulièrement l'Oil & Gas. Ces projets, sont quelques fois  critiqués pour leurs manque de coordination principalement de l'historique des leçons apprises (lessons learned).Surtout les données des projets qui sont souvent éparpillés dans une multitudes de sites et machines. Avec l’importance croissante des données et le développement d’algorithmes d’apprentissage artificiel et automatique, il existe une opportunité d’exploiter les données pour améliorer la prévisibilité de la planification des projets, comme dans l’exemple du secteur EPC oil & Gas.

    Cependant, nous pouvons envisager des collectes et traitement  de données manuellement. Cette opération necessite de nombreux traitements manuels de données impliquant le logiciel et les feuilles de calcul Primavera P6. Ces processus sont si laborieux qu'essayer d'effectuer cette tâche manuellement fais perdre beaucoup de temps et d'énergie.

    À partir de là, nous pouvons écrire des codes pour extraire les données du fichier Primavera afin des les utiliser jusqu'à établir une bibliothèque que nous pouvons adapter et  réutiliser selon nos besoins. Nous pouvons aussi envisager la crétion de dashboard avec la merveilleuse Django Framework pour saisir et visualiser instentanements les rapports des projets ent tout site et toute machine.

    Comment analyser les données de Primavera en python

    La première chose à faire est de comprendre la structure des fichiers et des bases de données ainsi que les outils necessaires pour se connecter à ce BD, extraire et analyser les données.

    Nous pouvons soit nous connecter directement aux BD soit extraire des données à partir des fichiers XER.

    Dans cette partie nous allons commencer par la plus simple qui est l'exractions des données des XER.

    Dans d'autre tutos nous allons voir comment extraire les données directement des BD de divers sites et divers machines.

    Ensuite il faudra mettre en place votre environnement virtuel, personellement j'utilse Linux, et donc la tâche est trés simple.

    Une fois notre environnement est activé, nous pouvons à l'aide de lignes de commande installer et utiliser la bibliothèque grâce au formidable utilitaire python pip.

    Windows:

    pip install xer-reader

    Linux/Mac:

    pip3 install xer-reader
    

    Une fois l'installation est terminée
     

    Étape 1 :

    importez la bibliothèque en tapant le code suivant :

    from xer_reader import XerReader

    Étape 2 :

    Créez une nouvelle instance d'un objet XerReader en passant le fichier XER comme argument. XerReader peut accepter le chemin du fichier représenté sous la forme d'un objet str ou pathlib Path, ou d'un fichier binaire reçu en réponse à des requêtes, Django, Flask, FastAPI, etc...

    file = r"/path/to/file.xer"
    reader = XerReader(file)

    Les attributs

     data [str] - Le contenu du fichier XER sous forme de chaîne.
     export_date [datetime] - La date à laquelle le fichier XER a été exporté.
     export_user [str] - L'utilisateur P6 qui exporte le fichier XER.
     export_version [str] - La version P6 utilisée pour exporter le fichier XER.
     file_name [str] - Le nom du fichier sans l'extension '.xer'.

    Étape 3 :

    check_errors() -> liste[str]


    Vérifie le fichier XER pour les tables manquantes et les données orphelines et renvoie les résultats sous forme de liste d'erreurs.

     Des tables manquantes peuvent survenir lorsqu'une entrée du tableau 1 pointe vers une entrée du tableau 2 mais que le tableau 2 n'existe pas du tout.
     Les données orphelines se produisent lorsqu'une entrée du tableau 1 pointe vers une entrée du tableau 2 mais que l'entrée du tableau 2 n'existe pas.

    delete_tables(*table_names : str) -> str


    Supprime un nombre variable de tables (table_names) des données du fichier XER et renvoie une nouvelle chaîne (ne modifie pas l'attribut XerReader.data).

    Dans l'exemple suivant, les tables associées aux champs définis par l'utilisateur sont supprimées du contenu du fichier XER et stockées dans une nouvelle variable new_xer_data, qui peut ensuite être écrite dans un nouveau fichier XER :

    new_xer_data = reader.delete_tables("UDFTYPE", "UDFVALUE")

    avec open("New_XER.xer", "w", encoding=XerReader.CODEC) comme new_xer_file :
     

    new_xer_file.write(new_xer_data)
    get_table_names() -> list[str]


    Renvoie une liste de noms de tables inclus dans le fichier XER.

    get_table_str(table_name: str) -> str


    Renvoie le texte séparé par des tabulations pour une table spécifique dans le fichier XER.

    has_table(table_name: str) -> bool


    Renvoie True si la table (nom_table) est trouvée dans le fichier XER.

    parse_tables() -> dict[str, Table]


    Renvoie un dictionnaire avec le nom de la table comme clé et un objet Table comme valeur.

    to_csv(file_directory: str | Path) -> None


    Générez un fichier CSV pour chaque table du fichier XER en utilisant « tab » comme délimiteur. Les fichiers CSV seront créés dans le répertoire de travail actuel.
    Facultatif : transmettez une chaîne ou un objet Path (file_directory) pour spécifier un dossier dans lequel stocker les fichiers CSV.

    to_excel() -> None


    Générez un fichier Excel (.xlsx) avec chaque tableau du fichier XER sur sa propre feuille de calcul. Le fichier Excel sera créé dans le répertoire de travail actuel.

    to_json(*tables: str) -> str


    Générez une représentation sous forme de chaîne conforme à JSON des tables du fichier XER.
    Facultatif : transmettez les noms de tables spécifiques à inclure dans la chaîne json.

    pour plus d'information vous pouvez consulter la Documentation Oracle

    Si vous desirez une formation veuillez nous contacter à notre page contact ou par email admin@tidjma.tn
     

    Comments


    No Comments
    POST COMMENT
    captcha
    Back