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> campo <...n>|<FIELDS> ALL> <IF prueba> <TO nombre de tabla> SCRIPT path_to_script <WHILE prueba> <FIRST rango|NEXT rango> <KEEPTITLE> <SEPARATOR character> <QUALIFIER carácter> <PASSWORD num|PROMPT_PASSWORD> <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 nombre_campoIncluya 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: Vendor.Vendor_Name

  • FIELDS ALLIncluya 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_tablaguarda los resultados en una tabla de Analytics

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

    Por valor predeterminado, la 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:\Output.FIL"
    • TO "Results\Output.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:

  • FIRSTComienza a procesar desde el primer registro hasta que se llega al número de registros especificado.
  • NEXTComienza 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.

PASSWORD núm | PROMPT_PASSWORD

opcional

PASSWORD núm

La definición de contraseña que se debe usar.

No se utiliza PASSWORD núm para solicitar o especificar una contraseña real. La definición de contraseña hace referencia a una contraseña proporcionada o configurada previamente con el comando PASSWORD, el comando SET PASSWORD o la etiqueta de estudio analítico PASSWORD.

núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o configuraron dos contraseñas previamente en un script, o al programar un script de estudio analítico, PASSWORD 2 especifica que se utiliza la contraseña número 2.

Si desea obtener más información acerca de la especificación o configuración de contraseñas, consulte:

PROMPT_PASSWORD

Una alternativa al uso de una definición de contraseña, PROMPT_PASSWORD muestra un mensaje de contraseña en el momento en que  se ejecuta PYCOMMAND.

Para obtener más información, consulte Cómo PYCOMMAND pone una contraseña a disposición del script de Python.

ABRIR

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
# Utilice la función de Python incluida con 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
# 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 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 = {'Número_de_proveedor': ['12701', '10134', '11663'],
'Nombre_proveedor': ['Harris Projects', 'Stars Trading', 'More Power Industries'],
'Ciudad_proveedor': ['Baton Rouge', 'Milwaukee', 'Los Angeles'],
'Número_factura': ['232556', '74841', '5986811'],
'Fecha_factura': ['2024-10-22', '2024-10-22', '2024-10-23'],
'Importe_factura': [2064.48, 18883.34, 1145.58],
'Número_de_producto': ['030302903', '030302303', '090501551'],
'Cantidad': [204, 458, 626],
'Costo_unitario': [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

# Export data from Python to 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.

Cómo PYCOMMAND pone una contraseña a disposición del script de Python

Cuando PYCOMMAND incluye el parámetro PASSWORD o PROMPT_PASSWORD, una contraseña proporcionada por el usuario se pone a disposición del script de Python. La contraseña se almacena de forma temporal y segura en la memoria, en la variable de entorno ACL_PY_PASSONY. La contraseña no aparece en el registro de Analytics.

Para acceder a la variable de entorno de contraseña en el script de Python, defina una variable de Python usando esta sintaxis:

password_from_analytics = os.getenv("ACL_PY_PASSWORD")