Comando PYCOMMAND
Informações do conceito
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.
|
| 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:
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:
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
-
Use um script do Python para importar dados para o Analytics
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)
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.
-
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
-
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.
-