Get Inspire insights from former attendees in our AMA discussion thread on Inspire Buzz. ACEs and other community members are on call all week to answer!

Alteryx Designer Desktop Discussions

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

Recursive Join Hierarchy Data Macro

stapuff106
8 - Asteroid

I am working on a flat Bill of Material data set (left to right) that can be from 2 levels to 12 levels (currently).

 

Full.PNG

 

Level 1 is a SQL call to the database and contains a field that defines the # of Levels of the BOM.

Note - the db I am using does not allow for recursive CTE or this would have been solved via SQL.

Level 2 for each is a unique join to Level 1 and not considered for the macro.

Level 3 - 12 are identical. Level 2 joins to Level 3, Level 3 to Level 4, Level 4 to Level 5, etc. 

 

Macro.PNG

 

I thought initially the Iterative Macro would be a good option, but all of the tools would need to updated.

Never building an Iterative macro before and never knew adding a Control Parameter tool automatically changed it to a batch macro until after the fact.

 

Formula.PNGJoin.PNGMulti-Row.PNGRename.PNGSort.PNG

 

 

 

Although the current workflow (very top image) is quick (Total run time is 1min 30 seconds) there are 3 issues

1) Each part is run through all 12 levels.

2) Not dynamic - what if the Levels exceed 12 (in the future)

3) There is a summarization record at the end of each BOM that I do not want. Example a 5 level BOM actually has 6 levels so it needs to stop before the 6th join.

*Note a dynamic select at the end could solve #3 above.

 

A batch macro could be built to include a detour at each level 3-12

This would solve issue 1 & 3

 

Not looking specifically for an "answer" per se, but how you did or would approach a scenario like this.

 

Puff  

 

Below are some hideous examples I was playing with:

 

Test1.PNGTest2.PNG

2 REPLIES 2
Treyson
13 - Pulsar
13 - Pulsar

@stapuff106 This is my favorite question that I have seen on the community in a long, long time. Macros are awesome and sometimes the hardest part is figuring out that you need a macro or you have a "macro problem". I am going to start off with adding some reading material. Blog articles I wrote a few years back that talk about iterative and batch macros, where to use them and why they are different.

 

https://community.alteryx.com/t5/Engine-Works/What-the-Heck-Is-a-Macro/ba-p/406214

https://community.alteryx.com/t5/Engine-Works/Batches-Be-Solvin/ba-p/444205

https://community.alteryx.com/t5/Engine-Works/Hello-Iterative-Macro-My-Old-Friend/ba-p/420308

 

If you are still with me, let's talk about your problem!

 

this statement here is awesome:

 

Although the current workflow (very top image) is quick (Total run time is 1min 30 seconds) there are 3 issues

1) Each part is run through all 12 levels.

2) Not dynamic - what if the Levels exceed 12 (in the future)

3) There is a summarization record at the end of each BOM that I do not want. Example a 5 level BOM actually has 6 levels so it needs to stop before the 6th join.

 

You understand the issue, we just really need to talk architecture.

 

I am trying to figure out in my head if we need to have an iterative macro with a batch macro inside (likely) or there is some data point that will help us remove records logically (speaking specifically to this: There is a summarization record at the end of each BOM that I do not want. thought I may be reading it incorrectly).

 

you were on the right path, but this part (I think) would want to be a batch macro inside of your iterative macro.

Treyson_1-1640895044547.png

 

 

Also when you have an iterative macro there is a new workflow constant added, that might be useful to us.

Treyson_0-1640894804096.png

 

So that was a lot of word vomit, not at all solving your problem, but speaking to the fact that: yes, we can solve this! I would love to help you with it, if you are interested. feel free to send a direct message and we can walk through some of the nitty gritty!

 

Treyson Marks
Senior Analytics Engineer
stapuff106
8 - Asteroid

@Treyson I appreciate your response back and willingness to roll up your sleeves, but really appreciate you dropping knowledge.

 

In the example of  "There is a summarization record at the end of each BOM that I do not want. Example a 5 level BOM actually has 6 levels so it needs to stop before the 6th join." in the Level 1 SQL call there is a field that specifically states the Level, which in this case would be 5. 

 

LVL1_KALST
5

 

When I read your response and you mentioned a nested Batch Macro... I was like hell[o] no.... why didn't I think of that. Head stuck in the sand, not thinking of the complete approach through and really the reason for the post.

 

I will put a workable example of the current data together and take you up on your offer. 

 

Thanks again,

 

Puff

Labels