Comando PYCOMMAND
Información de concepto
Pasa una tabla de Analytics a un script de Python externo como un marco de datos, y crea una nueva tabla en el proyecto de Analytics utilizando la salida devuelta del script de Python externo.
Sintaxis
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> <OPEN>
Parámetros
Nombre | Descripción |
---|---|
FIELDS nombre_campo <...n> | FIELDS ALL opcional |
Los campos de la tabla de origen de Analytics o las expresiones que se deben incluir en el marco de datos que se envía al script de Python.
|
IF prueba opcional |
Una condición que se debe cumplir para procesar el registro actual. El marco de datos que se pasa al script de Python contiene únicamente los registros que cumplen con esta condición. |
TO nombre_tabla opcional |
El lugar al que se deben enviar los resultados del comando:
La tabla de salida se crea a partir del marco de datos que devuelve el script de Python. |
SCRIPT ruta_al_script |
La ruta completa o relativa al script de Python en el sistema de archivos. Encierre ruta_al_script entre comillas. |
WHILE prueba opcional |
Una expresión condicional que debe ser verdadera para procesar cada registro. El comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al final de la tabla. Nota Si usa WHILE junto con FIRST o NEXT, el procesamiento de registros se detiene al llegar a un límite. |
FIRST rango | NEXT rango opcional |
La cantidad de registros que se procesarán:
Utilice intervalo para especificar la cantidad de registros que se deben procesar. Si omite FIRST y NEXT, se procesan todos los registros de forma predeterminada. |
KEEPTITLE opcional |
Tratar a la primera fila de datos como nombres de campos en lugar de datos. Si se omite, no se envía ningún nombre de campo al script de Python. Esta opción es necesaria si desea recuperar los datos utilizando nombres de columnas en el script de Python. |
SEPARATOR carácter opcional |
El carácter que se debe utilizar como separador entre campos. Debe especificar el carácter como una cadena entre comillas. El carácter predeterminado es la coma. Nota Evite usar los caracteres que aparecen en los campos de entrada. Si el carácter SEPARATOR aparece en los datos de entrada, es posible que los resultados se vean afectados. |
QUALIFIER carácter opcional |
El carácter que se debe utilizar como calificador de texto para encerrar e identificar los valores de los campos. Debe especificar el carácter como una cadena entre comillas. El carácter predeterminado es la comilla doble. Nota Evite usar los caracteres que aparecen en los campos de entrada. Si el carácter QUALIFIER aparece en los datos de entrada, es posible que los resultados se vean afectados. |
OPEN opcional |
Abre la tabla creada por el comando después de la ejecución del comando. Solo es válido si el comando crea una tabla de salida. |
Ejemplos
Puede enviar datos de cuentas a pagar desde Analytics a un script de Python, realizar algunos análisis u operaciones sobre los datos en Python y, a continuación, exportar los resultados de Python de nuevo a Analytics.
Comando de Analytics
PYCOMMAND exporta los campos de cuentas por pagar especificados al script de Python testInOutput.py, espera mientras se ejecuta el script y, a continuación, guarda los resultados del script de Python en una nueva tabla de Analytics denominada AN_Python_roundtrip.
OPEN Trans_Cp
PYCOMMAND FIELDS Vendor_No Invoice_No Invoice_Date Invoice_Amount Prodno Quantity Unit_Cost SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
Esta versión del comando exporta todos los campos de la tabla Ap_Trans al script de Python.
OPEN Trans_Cp
PYCOMMAND FIELDS ALL SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
Python script (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)
Utilice un script de Python para importar datos de cuentas por pagar a Analytics.
Para los fines del ejemplo, el script de Python genera algunos datos de muestra. Normalmente, un script importaría datos de una fuente externa a Python, realizaría el análisis o la preparación de archivos en Python y, a continuación, exportaría los resultados a Analytics.
Comando de Analytics
PYCOMMAND llama al script de Python testOutput.py y luego guarda los resultados del script de Python en una nueva tabla de Analytics llamada Input_from_Python.
PYCOMMAND SCRIPT "testOutput.py" TO Input_from_Python.fil
Python script (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)
# Muestra de código de usuario
user_df = df
# End sample user code
# Exportar datos de Python a Analytics
# Utilice la función de Python incluida con 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)
Observaciones
Cómo funciona PYCOMMAND
PYCOMMAND pasa una tabla de Analytics a un script de Python externo como un marco de datos, espera mientras se ejecuta el script de Python y, a continuación, crea una nueva tabla en Analytics utilizando la salida devuelta por el script de Python. Puede utilizar PYCOMMAND tantas veces como sea necesario en el transcurso de un script de Analytics.
Con la instalación de Analytics se incluyen dos funciones de Python que se utilizan en el script de Python para introducir y enviar datos:
-
Datos de entradaacl_py_util.from_an() importa datos de Analytics a Python
-
Datos de salidaacl_py_util.to_an() exporta datos de Python a Analytics
Archivos de log
Analytics crea dos archivos de registro asociados al PYCOMMAND. Los registros pueden ayudarle a solucionar problemas de integración entre Analytics y Python, y a depurar errores en los scripts asociados de Analytics y Python.
Los archivos de registro se almacenan en la carpeta del proyecto de Analytics:
-
aclpython.log - registra los mensajes de error de Analytics cuando falla PYCOMMAND
-
acl_py_util.log - registra los mensajes informativos emitidos por el script de Python
Set up acl_py_util.log
acl_py_util.log es un registro configurable que se incluye con la instalación de Analytics. Siga los pasos que se indican a continuación para instalar y configurar el log.
Nota
Debe configurar el log individualmente para cada script de Python en el que desee utilizarlo.
-
En el bloque de declaración de importación en la parte superior de un script Python, agregue esta sentencia:
from acl_py_util import logger
-
En cualquier punto del script de Python en el que quieras crear una entrada de log, agregue esta línea:
logger.info(Python_object)
Por ejemplo:
-
logger.info(dataframe_name.head(10)) crea una entrada de registro con los nombres de las columnas y las 10 primeras filas del estado actual del marco de datos nombrado.
-
logger.info(f"*** Python script completed ***\n") insertado al final del script registra la finalización del script en el registro, e inserta una línea vacía entre los detalles del registro para ejecuciones de script separadas.
-