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> champ <...n>|<FIELDS> ALL> <IF test> <TO nom_table> SCRIPT chemin_vers_script <WHILE test> <FIRST plage|NEXT plage> <KEEPTITLE> <SEPARATOR caractère> <QUALIFIER caractère> <OPEN>
Paramètres
| Nom | Description |
|---|---|
|
FIELDS nom_champ <...n> | FIELDS ALL optionnel |
Champs ou expressions de la table Analytics source à inclure dans le cadre de données envoyé au script Python.
|
| IF test optionnel |
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 optionnel |
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 optionnel |
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. Remarque 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 optionnel |
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 optionnel |
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 optionnel |
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. Remarque É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 optionnel |
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. Remarque É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. |
|
OPEN optionnel |
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'],
'Vendor_Name': ['Harris Projects', 'Stars Trading', 'More Power Industries'],
'Vendor_City': ['Baton Rouge', 'Milwaukee', 'Los Angeles'],
'Invoice_Number': ['232556', '74841', '5986811'],
'Invoice_Date': ['2024-10-22', '2024-10-22', '2024-10-23'],
'Invoice_Amount': [2064.48, 18883.34, 1145.58],
'Product_Number': ['030302903', '030302303', '090501551'],
'Quantity': [204, 458, 626],
'Unit_Cost': [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ée acl_py_util.from_an() importe des données d’Analytics vers Python
-
Données de sortie acl_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.logest une trace configurable incluse dans l’installation d’Analytics. Appliquez les étapes ci-dessous et configurez la trace.
Remarque
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.
-