Commande PYCOMMAND
Information de Concept
Transmet une table Analytics à un script Python externe sous forme de cadre de données et crée une nouvelle table dans le projet Analytics à l’aide de la sortie renvoyée par le script Python externe.
Syntaxe
PYCOMMAND <<FIELDS> field <...n>|<FIELDS> ALL> <IF test> <TO table_name> SCRIPT path_to_script <WHILE test> <FIRST range|NEXT range> <KEEPTITLE> <SEPARATOR character> <QUALIFIER character> <PASSWORD num|PROMPT_PASSWORD> <OPEN>
Paramètres
| Nom | Description |
|---|---|
|
FIELDS nom_champ <...n> | FIELDS ALL facultatif |
Champs ou expressions de la table Analytics source à inclure dans le cadre de données envoyé au script Python.
|
| IF test facultatif |
Condition devant être remplie pour que l'enregistrement actuel soit traité. Le cadre de données transmis au script Python contient uniquement les enregistrements qui remplissent la condition. |
| TO nom_table facultatif |
Emplacement vers lequel envoyer les résultats de la commande :
La table de sortie est créée à partir du cadre de données que le script Python renvoie. |
| SCRIPT chemin_vers_script |
Chemin d’accès complet ou relatif au script Python sur le système de fichiers. Entourez chemin_vers_script de guillemets. |
| WHILE test facultatif |
Expression conditionnelle qui doit être vraie afin de traiter chaque enregistrement. La commande est exécutée jusqu'à ce que la condition soit évaluée comme fausse ou lorsque la fin de la table est atteinte. Note Si vous utilisez WHILE conjointement avec FIRST ou NEXT, le traitement des enregistrements s'arrête dès qu'une limite est atteinte. |
| FIRST plage | NEXT plage facultatif |
Le nombre d'enregistrements à traiter :
Utilisez plage pour indiquer le nombre d'enregistrements à traiter. Si vous ignorez FIRST et NEXT, tous les enregistrements sont traités par défaut. |
| KEEPTITLE facultatif |
Traitez la première ligne de données en tant que noms de champs plutôt que comme données. Si cette option est omise, aucun nom de champ ne sera envoyé au script Python. Cette option est requise si vous souhaitez récupérer les données à l’aide des noms des colonnes dans le script Python. |
| SEPARATOR caractère facultatif |
Caractère à utiliser comme séparateur de champs. Vous devez indiquer le caractère sous forme de chaîne entre guillemets. Le caractère par défaut est une virgule. Note Évitez d'utiliser des caractères qui apparaissent dans les champs d'entrée. Si le caractère SEPARATOR apparaît dans les données d'introduction, les résultats peuvent être affectés. |
| QUALIFIER caractère facultatif |
Caractère à utiliser en tant qu'identificateur de texte pour renvoyer à la ligne et identifier des valeurs de champs. Vous devez indiquer le caractère sous forme de chaîne entre guillemets. Le caractère par défaut est un guillemet double. Note Évitez d'utiliser des caractères qui apparaissent dans les champs d'entrée. Si le caractère QUALIFIER apparaît dans les données d'introduction, les résultats peuvent être affectés. |
|
PASSWORD num | PROMPT_PASSWORD facultatif |
PASSWORD num Définition de mot de passe à utiliser. Vous n'utilisez pas PASSWORD num pour inviter à saisir ou pour spécifier un mot de passe réel. La définition de mot de passe renvoie à un mot de passe fourni ou défini auparavant à l'aide de la commande PASSWORD, de la commande SET PASSWORD ou de la balise d'outil d'analyse PASSWORD. num correspond au numéro de la définition de mot de passe. Par exemple, si deux mots de passe ont été fournis ou définis auparavant dans un script, ou lors de la planification d'un script d'analyse de données, PASSWORD 2 indique que le mot de passe n° 2 est utilisé. Pour plus d'informations sur la fourniture ou définition de mots de passe, consultez les rubriques : PROMPT_PASSWORD Alternative à l’utilisation d’une définition de mot de passe, PROMPT_PASSWORD affiche une invite de mot de passe au moment de l exécution de PYCOMMAND. Pour de plus amples informations, consultez la section Comment PYCOMMAND met un mot de passe à la disposition du script Python. |
|
OUVRIR facultatif |
Ouvre la table créée par la commande après l'exécution de la commande. Valide uniquement lorsque la commande crée une table de sortie. |
Exemples
-
Allers-retours de données entre Analytics et un script Python
-
Utiliser un script Python pour importer des données dans Analytics
Envoyez les données de comptabilité fournisseurs d’Analytics vers un script Python, procédez à des analyses ou à des opérations sur ces données dans Python, puis renvoyez les résultats en les exportant de Python vers Analytics.
Commande Analytics
PYCOMMAND exporte les champs de comptabilité fournisseurs spécifiés vers le script Python testInOutput.py, attend que le script s'exécute, puis enregistre les résultats du script Python dans une nouvelle table Analytics nommée aller-retour_AN_Python.
OPEN Trans_Cf
PYCOMMAND FIELDS No_Fournisseur No_Facture Date_Facture Montant_Facture Coût_Unitaire Quantité NumProd SCRIPT "testInOutput.py" KEEPTITLE TO aller-retour_AN_Python.fil
Cette version de la commande exporte tous les champs de la table Trans_Cf dans le script Python.
OPEN Trans_Cf
PYCOMMAND FIELDS ALL SCRIPT "testInOutput.py" KEEPTITLE TO aller-retour_AN_Python.fil
Script Python (testInOutput.py)
import sys
import os
import logging
import pandas as pd
from acl_py_util import acl_py_util
from acl_py_util import logger
def main(args):
error_file = os.getenv("ACL_PY_ERROR_FILE")
if not error_file:
error_file = os.getenv('LOCALAPPDATA') + "/acl_py_utl.error"
# Import data from Analytics to Python
# Use Python function included with Analytics
df = acl_py_util.from_an()
''' Sample user code '''
# Create acl_py_util log entry with column names and rows from dataframe
logger.info(df)
# Copy the original dataframe to a new dataframe
user_df = df.copy()
# Multiply the Invoice_Amount column by 2
user_df.Invoice_Amount = user_df.Invoice_Amount * 2
# Create acl_py_util log entry with column names and rows from dataframe
logger.info(user_df)
''' End sample user code '''
# Export data from Python to Analytics
# Use Python function included with Analytics
acl_py_util.to_an(user_df)
# Create acl_py_util log entry recording script completion, and add an empty line
logger.info(f"*** Python script completed successfully ***\n")
if __name__ == "__main__":
main(sys.argv)
Vous utilisez un script Python pour importer des données de comptabilité fournisseurs dans Analytics
Aux fins de cet exemple, le script Python génère des exemples de données. Un script importe généralement des données d’une source externe vers Python, procède à une analyse ou à une préparation de fichier dans Python, puis exporte les résultats dans Analytics.
Commande Analytics
PYCOMMAND appelle le script Python testOutput.py, puis enregistre les résultats du script Python dans une nouvelle table Analytics nommée Entrée_de_Python.
PYCOMMAND SCRIPT "testOutput.py" TO Entrée_de_Python.fil
Script Python (testOutput.py)
import sys
import os
import logging
import pandas as pd
from acl_py_util import acl_py_util
from acl_py_util import logger
def main(args):
# Initialize sample accounts payable data
data = {'Vendor_Number': ['12701', '10134', '11663'],
'Nom_Fournisseur': ['Harris Projects', 'Stars Trading', 'More Power Industries'],
'Ville_fournisseur': ['Baton Rouge', 'Milwaukee', 'Los Angeles'],
'Numéro_Facture': ['232556', '74841', '5986811'],
'Date_Facture': ['2024-10-22', '2024-10-22', '2024-10-23'],
'Invoice_Amount': [2064,48, 18883,34, 1145,58],
'Numéro_Produit': ['030302903', '030302303', '090501551'],
'Quantité': [204, 458, 626],
'Coût_unitaire': [10, 41, 1]}
# Create dataframe
df = pd.DataFrame(data)
# Create acl_py_util log entry with column names and rows from dataframe
logger.info(df)
# Sample user code
user_df = df
# End sample user code
# Export data from Python to Analytics
# Use Python function included with Analytics
acl_py_util.to_an(user_df)
# Create acl_py_util log entry recording script completion, and add an empty line
logger.info(f"*** Python script completed ***\n")
if __name__ == "__main__":
main(sys.argv)
Remarques
Fonctionnement de PYCOMMAND
PYCOMMAND transmet une table Analytics à un script Python externe sous forme de cadre de données, attend pendant que le script Python s’exécute, puis crée une nouvelle table dans Analytics à l’aide de la sortie renvoyée par le script Python externe. Vous pouvez utiliser PYCOMMAND autant de fois que nécessaire au cours d’un script Analytics.
Deux fonctions Python sont incluses dans l’installation d’Analytics ; vous pouvez les utiliser dans le script Python pour les données d’entrée et de sortie :
-
Données d'entréeacl_py_util.from_an() importe des données d’Analytics vers Python
-
Données de sortieacl_py_util.to_an() exporte des données de Python vers Analytics
Fichiers traces
Analytics crée deux fichiers traces associés à PYCOMMAND. Les journaux peuvent vous aider à résoudre les problèmes d’intégration entre Analytics et Python, ainsi qu’à déboguer les erreurs des scripts Analytics et Python associés.
Les fichiers traces sont stockés dans le dossier du projet Analytics :
-
aclpython.log : enregistre les messages d'erreur d'Analytics lorsque PYCOMMAND échoue
-
acl_py_util.log : enregistre les messages d'information renvoyés par le script Python
Configurer acl_py_util.log
acl_py_util.log est une trace configurable incluse dans l'installation d'Analytics. Appliquez les étapes ci-dessous et configurez la trace.
Note
Vous devez configurer individuellement chaque trace pour chaque script Python où vous souhaitez l’utiliser.
-
Dans le bloc d’instructions d’importation tout en haut du script Python, ajoutez cette instruction :
from acl_py_util import logger
-
À n’importe quel endroit du script Python où vous souhaitez créer une saisie de la trace, ajoutez la ligne suivante :
logger.info(Python_object)
Par exemple :
-
logger.info(dataframe_name.head(10)) crée une saisie de trace avec les noms de colonne et les 10 premières lignes du cadre de données nommé dans son état actuel.
-
logger.info(f"*** Python script completed ***\n") inséré à la fin du script enregistre l'achèvement du script dans la trace et insère une ligne vide entre les détails de la trace pour permettre des exécutions de script séparées.
-
Comment PYCOMMAND met un mot de passe à la disposition du script Python
Lorsque PYCOMMAND inclut le paramètre PASSWORD ou PROMPT_PASSWORD, un mot de passe fourni par l’utilisateur est mis à la disposition du script Python. Le mot de passe est stocké temporairement et en toute sécurité dans la mémoire, dans la variable d’environnement ACL_PY_PASSWORD. Le mot de passe ne figure pas dans la trace Analytics.
Pour accéder à la variable d’environnement PASSWORD dans le script Python, définissez une variable Python en utilisant la syntaxe suivante :
password_from_analytics = os.getenv("ACL_PY_PASSWORD")