Pessoal,
Estou automatizando algumas rotinas, e meu objetivo é criar um app utilizando o Python no qual todas as rotinas automatizadas estarão nele, e serão executadas com um clique...
Seria possível fazer isso com um workflow? Acionar o workflow através de um codigo em Python?
Se tiverem algum material ou exemplo que possa me ajudar
Obrigado!
Bom dia @GabrielStlz
Existem algumas formas de você fazer isso.
Uma delas é utilizando o RUN COMMAND, outra seria você utilizar as macros CREW (http://www.chaosreignswithin.com/p/macros.html). Nesse pacote você tem algumas ferramentas onde você ode encadear os workflows de acordo com a saída dele (sucesso ou não)
Com código Python provavelmente você vai precisar usar isso aqui https://help.alteryx.com/pt-br/current/designer/run-workflows-command-line
xemplo
Execute o aplicativo analítico contido na marca de caminho do fluxo de trabalho > de AppValues. xml.
AlteryxEngineCmd.exe MyWorkflow.yxmd
AlteryxEngineCmd.exe MyAnalyticApp.yxwz AppValues.xml
AlteryxEngineCmd.exe AppValues.xml
Valores de retorno de exemplo:
0-sucesso
1-existem avisos
2-erros existem
Para executar fluxos de trabalho através da linha de comando, adicione o caminho raiz Alteryx às variáveis do sistema Path no seu computador.
Atenção nesse passoem negrito, sem isso você pode ter problemas para executar
Espero que ajude.
Abraços
Oi @GabrielStlz !
Já fiz algo nesse mesmo sentido no passado. Uma alternativa a excelente solução do nosso mestre @carlosteixeira , é o seguinte:
O fluxo alteryx nada mais é que um arquivo .XML que o alteryx compreende como suas configurações para rodar o fluxo.
O que poder fazer é abrir seu fluxo em um bloco de notas para copiar todo o texto desse XML e no seu código python vc ter um passo onde cria um arquivo temporário com esse texto do XML e o executa.
Depois dentro do seu código python mesmo, pode inclusive colocar para deletar esse arquivo temporário do fluxo e continuar com os processos que tiver planejado.
Espero que ajude!
Não esqueça de marcar como solução a(s) resposta(s) que te atenderem!
Grande abraço
Oi @GabrielStlz !
Antes não tive como olhar muito, mas veja se essa solução ajuda:
1. Abre o fluxo com o notepad para ver o xml do fluxo
2. Usa esse código e cola o texto que pegou no notepad para dentro do arquivo que vai criar no fluxo como no exemplo. Não esquece de colocar o texto do xml entre 3 aspas duplas para ele entender linhas longas (""" """)
import os
f= open("criar_fluxo.yxmd","w+")
f.write("""<?xml version="1.0"?>
<AlteryxDocument yxmdVer="2021.1">
<Nodes>
<Node ToolID="1">
<GuiSettings Plugin="AlteryxBasePluginsGui.TextInput.TextInput">
<Position x="66" y="114" />
</GuiSettings>
<Properties>
<Configuration>
<NumRows value="1" />
<Fields>
<Field name="teste" />
</Fields>
<Data>
<r>
<c>texto de teste</c>
</r>
</Data>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxTextInput" />
</Node>
<Node ToolID="2">
<GuiSettings Plugin="AlteryxBasePluginsGui.BrowseV2.BrowseV2">
<Position x="174" y="114" />
</GuiSettings>
<Properties>
<Configuration>
<Layout>
<View1>
<Hints>
<Table />
</Hints>
</View1>
</Layout>
</Configuration>
<Annotation DisplayMode="0">
<Name />
<DefaultAnnotationText />
<Left value="False" />
</Annotation>
</Properties>
<EngineSettings EngineDll="AlteryxBasePluginsEngine.dll" EngineDllEntryPoint="AlteryxBrowseV2" />
</Node>
</Nodes>
<Connections>
<Connection>
<Origin ToolID="1" Connection="Output" />
<Destination ToolID="2" Connection="Input" />
</Connection>
</Connections>
<Properties>
<Memory default="True" />
<GlobalRecordLimit value="0" />
<TempFiles default="True" />
<Annotation on="True" includeToolName="False" />
<ConvErrorLimit value="10" />
<ConvErrorLimit_Stop value="False" />
<CancelOnError value="False" />
<DisableBrowse value="False" />
<EnablePerformanceProfiling value="False" />
<DisableAllOutput value="False" />
<ShowAllMacroMessages value="False" />
<ShowConnectionStatusIsOn value="True" />
<ShowConnectionStatusOnlyWhenRunning value="True" />
<ZoomLevel value="0" />
<LayoutType>Horizontal</LayoutType>
<MetaInfo>
<NameIsFileName value="True" />
<Name>fluxo_teste</Name>
<Description />
<RootToolName />
<ToolVersion />
<ToolInDb value="False" />
<CategoryName />
<SearchTags />
<Author />
<Company />
<Copyright />
<DescriptionLink actual="" displayed="" />
<Example>
<Description />
<File />
</Example>
</MetaInfo>
<Events>
<Enabled value="True" />
</Events>
</Properties>
</AlteryxDocument>""")
f.close()
os.startfile("criar_fluxo.yxmd")
3. Se quiser remover o arquivo depois, pode usar o código abaixo:
Espero que esses códigos possam ajudar você, daí se torna uma questão de adaptar dentro do script para funcionar no seu processo.
Qualquer coisa fala!
Olá, estou muito interessada nessa solução, mas fiquei com uma duvida: Para executar o xml dentro do Python eu preciso ter o Alteryx instalado no servidor?
Não consigo fazer a automação por CMD pois a firma não tem a licença para instalação do Alteryx no servidor.
Obrigada pelo codigo!
@carlosteixeira Carlão como sempre dando aula hahaha
@GabrielStlz tu também pode usar o agendador de tarefas do windows e usar o AlteryxEngineCMD.
Dependendo da tua necessidade, tu ainda pode usar o ERROR_LEVEL retornado pelo AlteryxEngineCMD e fazer notificações no Telegram usando o CURL.
Assim tu vai executar tuas rotinas em Alteryx e vai ter um feedback do status no teu celular via Telegram.
@Matheus_Rodrigues nada... sempre aprendendo
Aí, pode escrever um post dessa dica do Telegram @Matheus_Rodrigues essa aí eu quero aprender.
Mostra pra gente e posta aqui na comunidade
Abraços
@carlosteixeira essa literalmente vale ouro rsrs, mas vou analisar e pensar em algo para partilhar com a galera.
Ou podemos deixar para User Group, que tal? É um tema muito interessante e pouquíssimo explorado.
Porém pelo procedimento ser chato, não tem como escapar de montar uma postagem no blog.
@Matheus_Rodrigues manda msg pra mim e pro @Thableaus vamos falar sobre isso.
Usuário | Contagem |
---|---|
2 | |
1 |