Comando PYCOMMAND

Informações do conceito

Integrando scripts Python

Passa uma tabela do Analytics para um script do Python externo como um dataframe e cria uma nova tabela no projeto do Analytics usando a saída retornada do script do Python.

Sintaxe

PYCOMMAND <<FIELDS> campo <...n>|<FIELDS> ALL> <IF teste> <TO nome_tabela> SCRIPT caminho_para_script <WHILE teste> <FIRST intervalo|NEXT intervalo> <KEEPTITLE> <SEPARATOR caractere> <QUALIFIER caractere> <OPEN>

Parâmetros

Nome Descrição

FIELDS nome_campo <...n> | FIELDS ALL

opcional

Os campos da tabela do Analytics de origem ou as expressões a serem incluídas no dataframe enviado para o script do Python.

  • FIELDS nome_campo inclui o campo, os campos ou expressões especificados

    Separe nomes de campos com espaços. Os campos são exportados na ordem em que são listados.

    Para exportar um campo relacionado, o nome totalmente qualificado do campo deve ser especificado (nome_tabela.nome_campo). Por exemplo: Fornecedor.Nome_Fornecedor

  • FIELDS ALL inclui todos os campos na tabela

    Os campos são exportados na ordem em que aparecem no layout da tabela. Os campos relacionados não são exportados.

IF teste

opcional

Uma condição que precisa ser atendida para processar o registro atual. O dataframe passado para o script do Python contém apenas os registros que atendem à condição.
TO nome_tabela

opcional

A localização para onde enviar os resultados do comando:

  • nome_tabela salva os resultados em uma tabela do Analytics

    Especifique nome_tabela como uma cadeia entre aspas com uma extensão de arquivo .FIL. For exemplo: TO "Saída.FIL"

    Por padrão, o arquivo de dados da tabela (.fil) é salvo na pasta que contém o projeto do Analytics.

    Use um caminho de arquivo absoluto ou relativo para salvar o arquivo de dados em uma pasta diferente já existente:

    • TO "C:\Saída.FIL"
    • TO "Resultados\Saída.FIL"

    Nota

    Os nomes de tabela são limitados a 64 caracteres alfanuméricos, sem contar a extensão .FIL. O nome pode incluir o caractere de sublinhado ( _ ) mas nenhum outro caractere especial e nenhum espaço. O nome não pode começar com um número.

A tabela de saída é criada a partir do dataframe que o script do Python retorna.

SCRIPT caminho_para_script

O caminho completo ou relativo para o script do Python no sistema de arquivos. Coloque caminho_para_script entre aspas.

WHILE teste

opcional

Uma expressão condicional que deve ser verdadeira para processar cada registro. O comando é executado até que a condição seja avaliada como falsa ou o fim da tabela seja alcançado.

Nota

Se você usar WHILE juntamente com FIRST ou NEXT, o processamento de registros será interrompido assim que um limite for alcançado.

FIRST intervalo | NEXT intervalo

opcional

O número de registros a ser processado:

  • FIRST iniciar o processamento a partir do primeiro registro até alcançar o número de registros especificado
  • NEXT iniciar o processamento a partir do registro selecionado no momento até alcançar o número de registros especificado

Use intervalo para especificar o número de registros a serem processados.

Se você omitir FIRST e NEXT, todos os registros serão processados por padrão.

KEEPTITLE

opcional

Trate a primeira linha de dados como nomes de campos em vez de dados. Caso seja omitida, nenhum nome de campo é enviado para o script Python.

Esta opção é obrigatória se quiser recuperar dados usando nomes de coluna no script do Python.

SEPARATOR caractere

opcional

O caractere a ser usado como separador entre campos. É preciso especificar o caractere como uma cadeia entre aspas.

O caractere padrão é uma vírgula.

Nota

Evite usar quaisquer caracteres que aparecem nos campos de entrada. Se o caractere SEPARATOR aparecer nos dados de entrada, os resultados poderão ser afetados.

QUALIFIER caractere

opcional

O caractere qualificador de texto. Os valores dos campos são colocados entre caracteres qualificadores para identificação. É preciso especificar o caractere como uma cadeia entre aspas.

O caractere padrão é uma aspa.

Nota

Evite usar quaisquer caracteres que aparecem nos campos de entrada. Se o caractere QUALIFIER aparecer nos dados de entrada, os resultados poderão ser afetados.

OPEN

opcional

Abre a tabela criada pelo comando após a execução do comando. Válido apenas se o comando criar uma tabela de saída.

Exemplos

Ida e volta de dados entre o Analytics e um script do Python

Você envia os dados de contas a pagar do Analytics para um script do Python, executa algumas análises ou operações nos dados no Python e, em seguida, exporta os resultados do Python de volta para o Analytics.

Comando do Analytics

PYCOMMAND exporta os campos de contas a pagar especificados para o script do Python testInOutput.py, aguarda enquanto o script é executado e, em seguida, salva os resultados do script do Python em uma nova tabela do Analytics chamadaAN_Python_roundtrip.

OPEN Trans_Cp
PYCOMMAND FIELDS Fornecedor_Sem fatura_Sem Fatura_Data Valor_Fatura Prodno Unidade Quantidade_Preço SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil

Esta versão do comando exporta todos os campos na tabela Ap_Transpara o script do Python.

OPEN Trans_Cp
PYCOMMAND FIELDS ALL SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil

Script do 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"

# Importar dados do Analytics para o Python
# Usar função do Python incluída no Analytics
df = acl_py_util.from_an()

''' Código de usuário de amostra '''

# Criar entrada de log acl_py_util com nomes de colunas e linhas do dataframe
logger.info(df)

# Copiar o dataframe original para um novo dataframe
user_df = df.copy()

# Multiplique a colune Fatura_Valor por 2
user_df.Invoice_Amount = user_df.Invoice_Amount * 2

# Criar entrada de log acl_py_util com nomes de colunas e linhas do dataframe
logger.info(user_df)

''' Código de usuário de amostra final '''

# Exportar dados do Python para o Analytics
# Usar função do Python incluída no Analytics
acl_py_util.to_an(user_df)

# Criar entrada de log acl_py_util log gravando a conclusão do script e adicionando uma linha em branco
logger.info(f"*** Script do Python concluído com sucesso ***\n")

if __name__ == "__main__":
main(sys.argv)

 

Use um script do Python para importar dados para o Analytics

Você deve usar um script do Python para importar os dados de contas a pagar para o Analytics.

Para servirem de exemplo, o script do Python gera alguns dados de amostra. Normalmente, um script importaria os dados de uma fonte externa para o Python, realizaria a análise ou a preparação do arquivo no Python e, em seguida, exportaria os resultados para o Analytics.

Comando do Analytics

PYCOMMAND chama o script do Python testOutput.py e, em seguida salva os resultados do script do Python em uma nova tabela do Analytics chamada Input_from_Python.

PYCOMMAND SCRIPT "testOutput.py" TO Input_from_Python.fil

Script do 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):

# Inicializar amostra de dados de contas a pagar
data = {'Número_Fornecedor': ['12701', '10134', '11663'],
'Nome_Fornecedor': ['Harris Projects', 'Stars Trading', 'More Power Industries'],
'Cidade_Fornecedor': ['Baton Rouge', 'Milwaukee', 'Los Angeles'],
'Número_Fatura': ['232556', '74841', '5986811'],
'Data_Fatura': ['2024-10-22', '2024-10-22', '2024-10-23'],
'Valor_Fatura': [2064.48, 18883.34, 1145.58],
'"Produto_Número': ['030302903', '030302303', '090501551'],
'Quantidade': [204, 458, 626],
'Custo_Unidade': [10, 41, 1]}

# Criar dataframe
df = pd.DataFrame(data)

# Criar entrada de log acl_py_util com nomes de colunas e linhas do dataframe
logger.info(df)

#Código de usuário de amostra

user_df = df

#Código de usuário de amostra final

# Exportar dados do Python para o Analytics
# Usar função do Python incluída no Analytics
acl_py_util.to_an(user_df)

# Criar entrada de log acl_py_util log gravando a conclusão do script e adicionando uma linha em branco
logger.info(f"*** Script do Python concluído ***\n")

if __name__ == "__main__":
main(sys.argv)

Observações

Como o PYCOMMAND funciona

PYCOMMAND passa uma tabela do Analytics para um script Python externo como um dataframe, aguarda enquanto o script Python é executado e em seguida, cria uma nova tabela do Analytics usando o resultado retornado do script Python. Você pode usar PYCOMMAND tantas vezes quanto forem necessárias no decorrer de um script Analytics.

Duas funções do Pyhton estão incluídas na instalação do Analytics e você as usa no script Pytthon com dados de entrada e de saída:

  • Dados de entradaacl_py_util.from_an() importa dados do Analytics para o Python

  • Dados de saídaacl_py_util.to_an() exporta dados do Python para o Analytics

Arquivos de log

O Analytics cria dois arquivos de log associados ao PYCOMMAND. Os logs podem ajudar você a solucionar problemas de integração entre o Analytics e o Python, além de erros de depuração nos scripts Analytics e Python associados.

Os arquivos de log estão armazenados na pasta do projeto do Analytics:

  • aclpython.log – registra mensagens de erro do Analytics quando o PYCOMMAND falha

  • acl_py_util.log – registra a saída de mensagens com informações do script Python

Configurar acl_py_util.log

acl_py_util.log é um log configurável incluído na instalação do Analytics. Siga as etapas abaixo para definir e configurar o log.

Nota

Você deve definir e configurar o log individualmente para cada script do Python no qual você quer usá-lo.

  1. No bloco de instrução de importação na parte superior do script do Python, adicione essa instrução:

    from acl_py_util import logger

  2. Em qualquer ponto do script do Python onde você deseja criar a entrada do log, adicione essa linha:

    logger.info(Python_object)

    Por exemplo:

    • logger.info(nome_dataframe.head(10)) cria uma entrada de log com os nomes das colunas e as 10 primeiras linhas do estado atual do dataframe nomeado.

    • logger.info(f"*** script do Python concluído ***\n") inserido no final do script registra a conclusão do script no log e insere uma linha vazia entre os detalhes do log para execuções de script separadas.