I have a workflow segmented into 2 steps which are defined by 2 tool containers (refer to picture below).
Step 1 Extracts data from 2 separate SAP sources and exports it to 2 files.
Step 2 connects to the 2 files (extracted in step 1) and then transforms the data to give me the output that I require.
Question 1:
Step 1 needs to finish completely before step 2 begins. How do I force Alteryx to follow this order of execution? Currently
when I run the workflow Step 1 and Step 2 execute at the same time thus causing the workflow to fail.
Question 2: WIthin Step 1, how do I ensure that both extractions from SAP execute at the same time (in parallel) and not one after the other? Currently the 2nd extraction only executes after the 1st has completed which is inefficient as both extractions are independent of each other.
My questions are quite simple and have possibly been asked before (i couldn't find a simple solution), I'm hoping for a simple resolution without having to do massive workarounds (such as macros, etc) to achieve it 😀
You have a handful of options available to you @akadwa
1. You could break this up into two workflows and you 'runner' tools to execute multiple workflows. The challenge here is that you need to build a bit more work into the workflow around the possibility of failure, make sure its clear if the workflow fails for whatever reason
2. Probably more around what you are thinking about is to use what are called the "block until done" tools. I am a big fan of the "parallel block until done" tools which allow you to block certain flows until what you want is completed (like your extracts)
Hope this makes sense!
Hey @akadwa
One way you could consider doing this is by breaking up your current workflow into two separate workflows and turning each workflow into a batch macro respectively.
Once this is done, you can bring both of these macros into another workflow and execute them sequentially using a block until done tool.
High level sample picture of one way this could look - the text tool here contains a dummy value to enable the workflow to run, you could use any value you want as this wouldnt have any impact on the workflow:
Hope this helps
thanks for the quick responses so far. The Block until done tool seems useful for specific use cases but in my use case I was hoping to find a tool the would work at a container level rather than at a tool level to control the order of execution so that I could ensure that everything in container 1 (step 1 per my example) would complete before moving on container 2 (step 2 per my example). I suspect that perhaps there is no easy and elegant way in Alteryx to achieve that?
With regards to my second question (perhaps I should split this into a separate post?), is there any other simple way to ensure both my extracts out of SAP (in Step 1 per the picture) run at the same time (rather than one after another) without having to break them up into 2 workflows? FYI, I'm using the Xtract Universal connector to get data out of SAP:
Hi @akadwa
An option for controlling the order of execution at a container level would be to put your entire process within a batch macro and have a control parameter which enables/disables containers.
This control parameter input could be as simple as a text input like this:
Iterator |
Step 1 |
Step 2 |
Step 3 |
You can then use condition tools from your control parameter to determine which tool containers are enabled or disabled:
Hope this helps!
Is there any way to link 2 containers together to control the order of execution so that the execution of the contents of the second container becomes conditional upon the completion of the first container? This is similar to the control flow mechanism in SQL Server integration services. I'm new to Alteryx but to me this seems like basic functionality that seems to be missing in Alteryx and which requires workarounds to achieve the same end result in a not so elegant manner.
Looks like container level order of execution is regularly suggested in "Ideas":
https://community.alteryx.com/t5/Alteryx-Designer-Ideas/Run-Container-is-order/idi-p/399741
The first of these was recently accepted, so hopefully we will see this implemented in an upcoming release.
Hi DanFlint, thanks for posting the link to the Idea. I'm so glad that it has been accepted. I voted for it as well 😀 and added in some suggestions that I'm hoping the dev team will consider.
I'm really hoping this will be implemented soon as it will fundamentally change the way we create our workflows and remove unnecessary workarounds.
@akadwa You might also want to look into the CReW macros, there are some useful ones there like the list runner where you can chain workflows together. I came across this problem before and I split my work into macos and used the block until done to order the execution.