Daisy Channing?

Highlighted
Valued Contributor

Daisy Channing?

Hello there

 

Does Daisy Channing refer to referencing a calculated line item in a different module only or it also applies to referencing a calculated line item in the same module as well?

 

Case 1: Referencing a calculated line item in another module

Module A

Line Item A.1 = ITEM(List)

Module B

Line Item B.1 = Parent(Module A.Line Item A.1)

 

Case 2: Referencing a calculated line item in the same module

Module A

Line item A.1 = Item(List)

Line item A.2 = Parent(Line item A.1)

Einas
"Give a Man a Fish, and You Feed Him for a Day. Teach a Man To Fish, and You Feed Him for a Lifetime"
13 REPLIES 13
Highlighted
Master Anaplanner/Community Boss

Re: Daisy Channing?

@einas.ibrahim 

 

I don’t think engine understands the diff between inter module or intra module daisy chaining. Wherever it is in the model, if the engine is doing the job more than once it will fall under the daisy chaining. That’s my understanding of it.

Highlighted
Valued Contributor

Re: Daisy Channing?

Hi @Misbah 

 

Thanks for the response. I did think so as well until I found a pattern within examples in the training material that made me question that.

Look at this screenshot for example:

image.png

 

  • The Line Item Actual Period? is dependant on the Line Item Current Period Start (Blue Highlight)
  • At the same time if we don't reference an already calculated Line Item, then we are writing a formula more than once (yellow highlight), which means taxing the engine as well.

So which way is it? This made me feel that I may not be fully understanding Daisy Chaining.

 

Any thoughts? 

Einas
"Give a Man a Fish, and You Feed Him for a Day. Teach a Man To Fish, and You Feed Him for a Lifetime"
Highlighted
Master Anaplanner/Community Boss

Re: Daisy Channing?

@einas.ibrahim 

 

I think when it comes to any calculation without data or simply SYS module calculations we do it once and then refer it multiple times within a model (Calculate once refer many times- Zen of the Planual). Basically an expression should not get repeated.

 

On the other hand Daisy chaining would mean when one line item with data in it gets referenced in subsequent/further line items creating dependencies and any change in the source line item has a ripple effect on dependent line items. This does not allow engine to run calcs in parallel which may degrade performance. 

Planual Explained Article on Daisy chaining:

https://community.anaplan.com/t5/Anaplan-Platform/Planual-Explained-Day-23/m-p/73436#M14862

 

Hope I didn’t confuse you more

 

 

Highlighted
Valued Contributor

Re: Daisy Channing?

Hey @Misbah 

 

Thanks again.

What do you mean by  "calculation without data" ? do you mean something like START() in the screenshot I provided?

If that's the case, then according to your answer, If I need to reference the start date of a period in a CALC module, I would use the following formula?

1. Line Item = START()

instead of 
2. Line Item = SYS Module.First Day of the month ??

Wouldn't #1 mean we are repeating the formula?

 

I don't think we are disagreeing on the theory, my question is just a bit nuanced and perhaps I'm not clarifying enough.

 

How about this... let's just focus on the difference between the 2 ways of writing a formula on the screenshot below. What's the difference (pros/cons) between writing the formulas as highlighted in yellow and that which is highlighted in blue?

 

 

image.png

 

I have a couple of theories but I'm looking for a confirmed answer

 

Einas
"Give a Man a Fish, and You Feed Him for a Day. Teach a Man To Fish, and You Feed Him for a Lifetime"
Highlighted
Community Boss

Re: Daisy Channing?

I confirm that for the engine, modules don't exist.

 

Ideally, what you have highlighted in yellow is wrong, but START() being a very simple and efficient formula it might be better than creating a reference to a line item.

I don't know if this one has been tested before.


Nathan Rudman, Anaplan Model Builder
Highlighted
Valued Contributor

Re: Daisy Channing?

@nathan_rudman 

Thank you, I agree.
I also believe the Best Practice are guidelines and following one or the other highly depends on many other factors like -as you said- the complexity of the formula, the size of the model, the number of list items involved in the calculations ..... etc

 

I asked the question just out of curiosity and to make sure I am not missing a concept.

 

I just feel that the 2 concepts (Best Practices) :

1. Don't Daisy Chain and 2. Don't repeat a formula
Can't exist together for every case, because by definition "Don't Daisy Chain" means to write the root formula again. Can we at least agree on this?

 

In the language of Management Consulting, this is not MECE 😁 [Mutually Exclusive Collectively Exhaustive]

 

Einas

Einas
"Give a Man a Fish, and You Feed Him for a Day. Teach a Man To Fish, and You Feed Him for a Lifetime"
Highlighted
Master Anaplanner/Community Boss

Re: Daisy Channing?

@einas.ibrahim 

 

Can't exist together for every case, because by definition "Don't Daisy Chain" means to write the root formula again. Can we at least agree on this?

 

I disagree. "Don't daisy chain" doesn't mean to write the formula again. It means to go back to the ultimate source and not the intermediate source. For example If I have data flow of A->B->C->D->E, this is an example of daisy chain. Rule says you should do below

A->B

A->C

A->D

A->E

On the other hand we have Rule which says Calculate once reference many times. We all agree to that point and there is no debate or discussion on that. But these two rules can co-exist. That's my opinion on these two rules. How I miss @DavidSmith & @rob_marshall expert advice here

Highlighted
Master Anaplanner/Community Boss

Re: Daisy Channing?

@einas.ibrahim 

 

What I meant by that was "Calculations that happen in SYS modules" including START()


Here is my POV of the below set of formulae as to how these should have been written. First three green and last two red for me. If the calculations have already been performed by the engine I will never repeat it 

First Day of Month = START()

Last Day of Month = END()

Current Period Start = CURRENTPERIODSTART()

CurrentPeriod? => Current Period Start = First Day of Month

Actual Period = First Day of Month < Current Period Start

 

Highlighted
Valued Contributor

Re: Daisy Channing?

@Misbah 

 

Thank you very much.
I appreciate your engagement and thinking about this with me.

 

As I said in my reply to Nathan, I think to Not Daisy Chain or Not Repeat the Formula are one of these "it depends" cases.

If I find more clarifying information, I'll make sure to come back and post it. 🙂

 

 

Einas
"Give a Man a Fish, and You Feed Him for a Day. Teach a Man To Fish, and You Feed Him for a Lifetime"