Comando PYCOMMAND

Información de concepto

Integración de scripts de Python

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.

  • FIELDS field_name incluye el campo, los campos o las expresiones especificados

    Separe los nombres de campo con espacios. Los campos se exportan en el orden en el que usted los indica.

    Para exportar un campo relacionado, especifique un nombre de campo completo (table_name.field_name). Por ejemplo: Proveedor.Nombre_proveedor

  • FIELDS ALL incluye todos los campos de tabla

    Los campos se exportan en el orden en el que aparecen en el formato de tabla. No se realizan exportaciones en los campos relacionados.

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:

  • nombre_tabla guarda los resultados en una tabla de Analytics

    Especifique el nombre_tabla como una cadena entre comillas con la extensión de archivo .FIL. Por ejemplo: TO "Salida.FIL"

    Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la carpeta que contiene el proyecto de Analytics.

    Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una carpeta existente o una diferente:

    • TO "C:\Salida.FIL"
    • TO "Resultados\Salida.FIL"

    Nota

    Los nombres de las tablas tienen un límite de 64 caracteres alfanuméricos, sin incluir la extensión .FIL. El nombre puede incluir un guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni espacios. El nombre no puede comenzar con un número.

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:

  • FIRST comienza a procesar desde el primer registro hasta que se llega al número de registros especificado
  • NEXT comienza a procesar desde el registro seleccionado actualmente hasta que se llega al número de registros especificado

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

Datos de ida y vuelta entre Analytics y un script de Python

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 a Analytics

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.

  1. 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

  2. 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.