Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Iterative Macro Condition

sbaker
8 - Asteroid

I would like to stop an iterative macro when a returned value doesn't exist in the evaluated field.  In other words, in order to stop the iteration, I'd like to filter out all records going to the Macro Output when x from Field #2 does not exist in Field #1.  I could Append x to all records and then compare the Appended field to Field #1 with a Formula.  I was wondering if there is an easier way.

4 REPLIES 4
Rohit_Bajaj
9 - Comet

Hi Sbaker,

 

Not sure if I am able to get your question fully.

Does using join helps your situation - Join Field 2 with Field 1?

 

Thanks,

Rohit Bajaj

SeanAdams
17 - Castor
17 - Castor

Hey @sbaker - happy Wednesday!

 

We may need to take a few iterations at this - not sure if I've interpreted your question correctly, but feel free to redirect or correct my understanding.

 

My understanding is:

- you have an iterative macro with 2 inputs

- You want to continue to iterate until the data in input 1 has no rows containing a value in input 2

 

Depending on whether you need a "contains" or a match - I'd either go with a formula (as you've said) or a simple join (where you take the left channel so that you don't matching rows)

 

If I've misunderstood or missed the mark - it may be worth mocking up what you're trying to achieve from the iterative macro (just drop the inputs and a proposed output with some notes on the need) onto a blank canvas and attach the workflow to this thread, and I'd be more than wiling to crack through this with you to find a solution.

 

Cheers @sbaker

sean

sbaker
8 - Asteroid

The macro is working properly,  though I am curious if I'm approaching iterative macros correctly.

 

The macro is attached; "Start Here" is where I begin handling if 1) all records or 2) no records should be sent to the iterative output.

 

Your explanation is correct.  I union the the evaluated results (which also go to the workflow output) with the input set (which then will go to the iterative output).  I want to filter out all records to stop the iteration if the new value of the current iteration does not exist in the original set.  I think this is different than the normal scenario where a macro iterates until all records are sent to the workflow output and the iterative output eventually runs out of data.

 

I used a combination of Append and Formula to evaluate if that value exists and then ultimately filter out all records if it doesn't. 

 

 

SeanAdams
17 - Castor
17 - Castor

Hey @sbaker

 

:-) now I'm very curious about the use for this macro, but appreciate that this may be company-confidential.

 

The short answer is that there is no sin or foul-play in using an iterative macro in this way - the power of the iterative macro is that it cycles until there are no more rows passed through - and an example of this would be where you look at moves in a board-game.   You want to explore the move-tree X levels deep - which means that you terminate the iterations (by passing zero more records) when either:

- Iteration count = X (you've use the iteration count in your macro too) or

- any move is a winning move (similar to what you've done with using isnull([Path order]) as the beginning of a "finished" flag

 

This kind of depth search until you find one or more records that satisfies a condition is a good use of iterative macros - so no foul committed at all.

 

:-) That's not to say that there aren't different ways to solve the problem - one thing I've really been reminded of by doing the weekly challenges is that here's as many ways to solve a problem in alteryx as there are people tackling the challenges - but if your way works, I say you're on the right track.

 

Have a good Thursday 

Sean

Labels