Skip to content
Apr 1 / Administrator

Skipcheck Feeders in TM1

If you want to understand skipcheck and feeders, you need to learn the whole concept in detail.

NOTE: Please remember that in example that is being used in this tutorial, I’ve kept the simple cube for clarity and have ignored irrelevant details  (for this concept) such as “Price at consolidated elements should be weighted average instead of simple roll up”.

What are Skipcheck Feeders in TM1

Let’s learn the Whole Story:

TM1 can handle very large cube sizes. In TM1, leaf level data (the data that users input) is stored in cube files whereas the rule based (e.g. Sale = Units * Price) and consolidated data (e.g. Q1, Q2, Year) is just kept in memory.

If a cube is just an input cube and it doesn’t contain any rules TM1 uses the fast consolidation algorithm to do the consolidation in the cube. Fast consolidation algorithm ignores the consolidation of cells which contain zero values. So if Q1 is consolidation of (Jan, Feb, Mar), it will check values of Jan, Feb and Mar; and if all three are zero, it will not put any values in Q1. It will simply ignore it. For a sparse cube this results in tremendous performance improvements.

For example: In below diagram, the fast consolidation engine just had to consolidate 6 cells

[‘1 Quarter’,’Units’], [‘1 Quarter’,’Price’], [‘1 Quarter’,’Sales’], [‘Year’,’Units’], [‘Year’,’Price’], [‘Year’,’Sales’]

Fast consolidation engine ignores ‘2 Quarter’ ‘3 Quarter’ and ‘4 Quarter’ because values in detail level cells  (Apr, May, Jun etc.) of these rollups are zeros.

Because of this, it didn’t have to do any consolidation for 9 cells: (Units, Price and Sales  X Q2, Q2,Q3)

In large sparse cubes, this approach results in hundreds of thousands of cells and results in better performance.

 

Now see what happens when you write a rule in a cube:

When you write a rule (any simple rule), TM1 turns this fast consolidation engine off. That means TM1 no longer ignores zero cells while doing consolidation. While processing the cube, it will check ALL cells and will perform consolidation on all of them.

So if we take above example, it will now have to perform 15 consolidations:

‘1 Quarter’  ‘2 Quarter’   ‘3 Quarter’   ‘4 Quarter’  ‘Year’ values of ‘Units’, ‘Price’, ‘Sales’       (5X3=15)

This deteriorates the performance in sparse cubes. The reason simply being that sparse cubes contain a huge number of zero cells and TM1 will check all cells to do consolidation even though it is not necessarily required for all of them.

 

What should we do to correct the issue?

Now the first logical thought that comes to mind is, why the hell turn the fast consolidation algorithm OFF? Let’s keep it ON.

Okay, point taken. So We’ll use a keywork SKIPCHECK for that. You have to put it in the beginning of the rule file. If you do so, TM1 will turn the fast consolidation algorithm (FCA) back ON. But doing so will not solve our problems. Because now, here is what will happen:

1. To find the value of [‘1 Quarter’, ‘Sales’], FCA will check the hierarchy of Months dimension. It will check values of  [‘Jan’, ‘Sales’],  [‘Feb’, ‘Sales’] and [‘Mar’, ‘Sales’].

2. However you must know that TM1 doesn’t save the values of calculated cells in cube file, it just saves them in memory. So although [‘Jan’, ‘Quantity’] and  [‘Jan’, ‘Price’] do exist in cube,  [‘Jan’, ‘Sales’] remains 0 in cube file and, is calculated and shown every time someone opens the cube.

3. Because of this when FCA checks values of  [‘Jan’, ‘Sales’],  [‘Feb’, ‘Sales’],[‘Mar’, ‘Sales’] and  finds them to be zero; it ignores the value for [‘1 Quarter’, ‘Sales’] and shows 0. Similar thing happens with [‘Year’, ‘Sales’] values.

Now although we’re using the powers of fast consolidation engine, we have incorrect values in so many consolidations.

 

Here come the Skipcheck Feeders 

Only if we could tell it which rule-based-cells are producing values!

Our problem lies in the fact that FCA takes the rule calculated cells as zero while doing the consolidation. If we could somehow check which rule based cells will produce non-zero values and tell FCA ‘that’, FCA will correctly do the consolidation for those cells.

So here comes what we’ve been trying to learn: FEEDERS

You can use Feeders statement to do that.

Let’s understand it using above example:

Our problem will get resolved if we could find those rule based cells which will produce values (will be non-zero) and tell FCA that. E.g. if we could just find those ‘Sales’ values which are non-zero and tell FCA to take only those values into consideration for consolidation. Here is how we’ll do that:

Feeders;
[‘Units’] => [‘Sales’];

We use Feeders (followed by semicolon) statement to say that we’re specifying rules for FCA.

By using the above other statement we’re saying that Sales value depends on Units. If Units is zero, Sales will be zero and if Units is non-zero, Sales will be non-zero. So please consolidate those Sales values for which Units are non-zero and ignore the others (ones for which units are zero).

In this scenario, FCA will consider Sales-Jan, Sales-Feb and Sales-Mar as non-zero values (because their Units values are non-zero) and will consolidate 1Quarter correctly this time. Furthermore, it will ignore ‘2 Quarter’, ‘3 Quarter’ and ‘4 Quarter’ consolidations because units in all respective 9 months (Apr, May, Jun etc.) are zero so Sales will be zero and so no consolidation for 3 quarters. Doing so will improve the performance because now we’re consolidating only those cells which DO require consolidation (total 6 cells)

 

Search Terms which could be helpful to find this article:

what is the point of a feeder in tm1

What are skipcheck and feeders

Skipcheck and feeders in tm1

what are feeders

why should i use skipcheck and feeders

13 Comments

leave a comment
  1. Roger / Apr 2 2013

    Nice Explanation… I kind of understood the concept before reading this but was confused why FCA won’t read the rule based N cells if using SKIPCHECK. After reading the blog I now know that it is because the rule based value will not be stored in the cube file, but in memory and hence it skips….nice explaination

  2. Sumanth / Apr 7 2014

    Great…tried to understand this from various articles….But none has explained clearly than you….logical explanation…Thanks

  3. Vaibhav / Sep 2 2014

    Excellent job.. cleared all doubts regarding skipchecks & feeders.. thanx a lot..

  4. Sandy / Sep 12 2014

    Very simple and clear explanation !! Very helpful….
    Thanks…..

  5. Amit / Mar 5 2015

    Nice explanation about Skipcheck and feeders even on IBM Product website they have not explanined Skipcheck and feeder in this most understanding way really appreciable

  6. swathi / Mar 18 2015

    Nice Explanation. but why we are not feeding Quantity. If Quantity is zero then also Sales become zero. this also impact on total Sales. why we are not considering this?

    • swathi / Mar 18 2015

      Sorry wrong comment delete it.

  7. swathi / Mar 18 2015

    i mean to say Price=0 and Units=5 then Sales=0. in this case we should feed Price => Sales. why didn’t you do here?

    • Administrator / Mar 19 2015

      Because even when quantity is not present, you may have price values present in corresponding cells. Price values will be present in all cells.

      For example, if you are selling books at $5 a piece, and you haven’t sold any books in the month of Jan, you would have 0 against Jan quantity but $5 against jan price. So for all months, you’ll have $5 in price cells. Now if you feed the sales by price, you’d actually be feeding all cells of the cube. Doing so will result into overfeeding.

  8. Prasad / Aug 27 2015

    why can’t go with the rule like price=>sales and why go with only unit=>sales

    could you please explain on thsi

  9. George Vinodh / Oct 30 2015

    Informative..easy understandable …very Helpful..

  10. Michael / Apr 22 2016

    Vey clear.

    Other writings on the topic were effective in explaining the sparsity concept and the need for feeders, but before this, none clearly explained the linkage between source & target in the feeder rule.

    I think the answer to swathi’s question could also be integrated into the document. Although it may appear self-explanatory, for a new-comer it actually isn’t!

    It is that relationship which is the key to understanding how to avoid under and over feeding.

  11. Bala / Nov 3 2016

    Can anyone please give me the URL for TM1 software download?

Leave a Comment

Thank you for Downloading.

Please input valid email id so that we can send you download link.

Email id Required.

We respect your privacy and never share your email id with anybody.