PYCOMMAND-Befehl
Konzept-Informationen
Übergibt eine Analytics-Tabelle als einen Datenrahmen an ein externes Python-Skript und erstellt mit der zurückgegebenen Ausgabe des Python-Skripts eine neue Tabelle innerhalb des Analytics-Projekts.
Syntax
PYCOMMAND <<FIELDS> Feld <...n>|<FIELDS> ALL> <IF Test> <TO Tabellenname> SCRIPT Pfad_zum_Skript <WHILE Test> <FIRST Bereich|NEXT Bereich> <KEEPTITLE> <SEPARATOR Zeichen> <QUALIFIER Zeichen> <OPEN>
Parameter
| Name | Beschreibung |
|---|---|
|
FIELDS Feldname <...n> | FIELDS ALL Optional |
Die Felder aus der Analytics-Quelltabelle oder die Ausdrücke, die in den Datenrahmen für das Python-Skript aufgenommen werden sollen.
|
| IF Test Optional |
Eine Bedingung, die erfüllt werden muss, damit der aktuelle Datensatz verarbeitet wird. Der Datenrahmen, den das Python-Skript zurückgibt, enthält nur Datensätze, welche die Bedingung erfüllen. |
| TO Tabellenname Optional |
Der Ort, an den die Ergebnisse des Befehls gesendet werden sollen:
Die Ausgabetabelle wird aus dem Datenrahmen erstellt, den das Python-Skript zurückgibt. |
| SCRIPT Pfad_zum_Skript |
Der vollständige oder relative Pfad zum Python-Skript innerhalb des Dateisystems. Schließen Sie Pfad_zum_Skript in Anführungszeichen ein. |
| WHILE Test Optional |
Ein bedingter Ausdruck, der wahr sein muss, damit ein Datensatz verarbeitet wird. Der Befehl wird ausgeführt, bis die Bedingung falsch ist oder das Tabellenende erreicht wurde. Hinweis Wenn Sie WHILE zusammen mit FIRST oder NEXT verwenden, endet die Datensatzverarbeitung, sobald eine Grenze erreicht wird. |
| FIRST Bereich | NEXT Bereich Optional |
Die Anzahl der zu verarbeitenden Datensätze:
Verwenden Sie Bereich, um die Anzahl der zu verarbeitenden Datensätze anzugeben. Wenn Sie FIRST und NEXT nicht angeben, werden standardmäßig alle Datensätze verarbeitet. |
| KEEPTITLE Optional |
Behandeln Sie die erste Datenzeile als Feldnamen und nicht als Daten. Falls dies ausgelassen wird, werden keine Feldnamen an das Python-Skript gesendet. Diese Option ist notwendig, falls Sie Daten unter den Spaltentiteln innerhalb des Python-Skripts abrufen möchten. |
| SEPARATOR Zeichen Optional |
Das Zeichen, das als Trennzeichen zwischen Feldern verwendet werden soll. Der Zeichen muss als in Anführungszeichen gesetzte Zeichenfolge angegeben werden. Das Standardzeichen ist ein Komma. Hinweis Vermeiden Sie die Verwendung von Zeichen, die in den Eingabefeldern vorkommen. Wenn das SEPARATOR-Zeichen in den Eingabedaten erscheint, kann sich dies auf die Ergebnisse auswirken. |
| QUALIFIER Zeichen Optional |
Das Zeichen, das als Textkennzeichner zum Umschließen und Identifizieren von Feldwerten verwendet wird. Der Zeichen muss als in Anführungszeichen gesetzte Zeichenfolge angegeben werden. Das Standardzeichen ist ein doppeltes Anführungszeichen. Hinweis Vermeiden Sie die Verwendung von Zeichen, die in den Eingabefeldern vorkommen. Wenn das QUALIFIER-Zeichen in den Eingabedaten erscheint, kann sich dies auf die Ergebnisse auswirken. |
|
OPEN Optional |
Öffnet die durch den Befehl erstellte Tabelle, nachdem der Befehl ausgeführt wird. Nur gültig, wenn der Befehl eine Ausgabetabelle erstellt. |
Beispiele
Sie senden Kreditorendaten aus Analytics an ein Python-Skript, führen einige Analysen oder Operationen mit den Daten in Python durch und exportieren dann die Python-Ergebnisse zurück nach Analytics.
Analytics-Befehl
PYCOMMAND exportiert die angegebenen Kreditorenfelder in das Python-Skript testInOutput.py, wartet, während das Skript ausgeführt wird, und speichert dann die Ergebnisse aus dem Python-Skript in einer neuen Analysetabelle namens AN_Python_roundtrip.
OPEN Ap_Trans
PYCOMMAND FIELDS Vendor_No Invoice_No Invoice_Date Invoice_Amount Prodno Quantity Unit_Cost SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
Diese Version des Befehls exportiert alle Felder in der Tabelle Ap_Trans in das Python-Skript.
OPEN Ap_Trans
PYCOMMAND FIELDS ALL SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
Python-Skript (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"
# Daten aus Analytics nach Python exportieren
# In Analytics enthaltene Python-Funktion verwenden
df = acl_py_util.from_an()
''' Beispiel-Benutzercode '''
# acl_py_util-Protokolleintrag mit Spaltennamen und Zeilen aus Datenrahmen erstellen
logger.info(df)
# Ursprünglichen Datenrahmen in neuen Datenrahmen kopieren
user_df = df.copy()
# Spalte „Invoice_Amount“ mit 2 multiplizieren
user_df.Invoice_Amount = user_df.Invoice_Amount * 2
# acl_py_util-Protokolleintrag mit Spaltennamen und Zeilen aus Datenrahmen erstellen
logger.info(user_df)
''' Beispiel-Benutzercode Ende '''
# Daten aus Python nach Analytics exportieren
# In Analytics enthaltene Python-Funktion verwenden
acl_py_util.to_an(user_df)
# acl_py_util-Protokolleintrag erstellen, um Skriptabschluss aufzuzeichnen, und leere Zeile hinzufügen
logger.info(f"*** Python script completed successfully ***\n")
if __name__ == "__main__":
main(sys.argv)
Sie verwenden ein Python-Skript, um Kreditorendaten in Analytics zu importieren.
Im Rahmen des Beispiels generiert das Python-Skript einige Beispieldaten. Normalerweise importiert ein Skript Daten aus einer externen Quelle in Python, führt eine Analyse oder Dateivorbereitung in Python durch und exportiert dann die Ergebnisse in Analytics.
Analytics-Befehl
PYCOMMAND ruft das Python-Skript testOutput.py auf und speichert dann die Ergebnisse aus dem Python-Skript in einer neuen Analytics-Tabelle namens Input_from_Python.
PYCOMMAND SCRIPT "testOutput.py" TO Input_from_Python.fil
Python-Skript (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):
# Beispiel-Kreditorendaten initialisieren
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]}
# Datenrahmen erstellen
df = pd.DataFrame(data)
# acl_py_util-Protokolleintrag mit Spaltennamen und Zeilen aus Datenrahmen erstellen
logger.info(df)
# Beispiel-Benutzercode
user_df = df
# Beispiel-Benutzercode Ende
# Daten aus Python nach Analytics exportieren
# In Analytics enthaltene Python-Funktion verwenden
acl_py_util.to_an(user_df)
# acl_py_util-Protokolleintrag erstellen, um Skriptabschluss aufzuzeichnen, und leere Zeile hinzufügen
logger.info(f"*** Python script completed ***\n")
if __name__ == "__main__":
main(sys.argv)
Bemerkungen
Wie funktioniert PYCOMMAND?
PYCOMMAND übergibt eine Analytics-Tabelle als Datenrahmen an ein externes Python-Skript, wartet, während das Python-Skript ausgeführt wird, und erstellt dann eine neue Tabelle in Analytics unter Verwendung der vom Python-Skript zurückgegebenen Ausgabe. Sie können PYCOMMAND im Verlauf eines Analytics-Skripts beliebig oft verwenden.
Die Analytics-Installation enthält zwei Python-Funktionen, die Sie im Python-Skript zur Eingabe und Ausgabe von Daten verwenden:
-
Eingabedatenacl_py_util.from_an() importiert Daten aus Analytics nach Python
-
Ausgabedatenacl_py_util.to_an() exportiert Daten aus Python nach Analytics
Protokolldateien
Analytics erstellt zwei mit PYCOMMAND verbundene Protokolldateien. Die Protokolle können Ihnen bei der Fehlerbehebung bei der Integration zwischen Analytics und Python sowie bei der Fehlerbehebung in den zugehörigen Analytics- und Python-Skripts helfen.
Die Protokolldateien werden im Analytics-Projektordner gespeichert:
-
aclpython.log – protokolliert Analytics-Fehlermeldungen, wenn PYCOMMAND fehlschlägt
-
acl_py_util.log – protokolliert Informationsmeldungen, die vom Python-Skript ausgegeben werden
Einrichten von acl_py_util.log
acl_py_util.log ist ein konfigurierbares Protokoll, das in der Analytics-Installation enthalten ist. Führen Sie die folgenden Schritte aus, um das Protokoll einzurichten und zu konfigurieren.
Hinweis
Sie müssen das Protokoll für jedes Python-Skript, in dem Sie es verwenden möchten, einzeln einrichten und konfigurieren.
-
Fügen Sie in den Block der Importanweisung am Anfang eines Python-Skripts die folgende Anweisung ein:
from acl_py_util import logger
-
Fügen Sie an jeder Stelle des Python-Skripts, an der Sie einen Protokolleintrag erstellen wollen, diese Zeile ein:
logger.info(Python_object)
Beispiel:
-
logger.info(dataframe_name.head(10)) erstellt einen Protokolleintrag mit den Spaltennamen und den ersten 10 Zeilen des aktuellen Zustands des genannten Datenrahmens.
-
logger.info(f"*** Python script completed ***\n") wird am Ende des Skripts eingefügt; zeichnet den Abschluss des Skripts im Protokoll auf und fügt bei separaten Skriptläufen eine Leerzeile zwischen den Protokolldetails ein.
-