Exploring TM1 - a Chartertech Company
Close this search box.

CubeProcessFeeders – Forcing TM1 to Reprocess Feeders

In the rules for many cubes we work with there are conditional feeders. These often cause us problems where the evaluated value changes from a zero to a non-zero value and the fed cell does not get initiated and therefore the rule does not calculate.

Background on Feeders

As you would undoubtedly be aware, TM1 is an in memory application and extremely efficient with utilising that memory. It is also blindingly fast. one of the primary reasons for this is that after Skipcheck is enabled, only cells that are required are initiated for use. This happens when either an n level cell has data loaded into it, or a rollup occurs of a cell with data in it or when a feeder opens a cell so a rule can calculate into it.

Conditional Feeders

Usually where we have a conditional rule, we need to have the inverse of that as a conditional feeder. For example you might have a rule in a SalesCommission cube like:

[‘Commissions’] = N:[‘Sales’] * db(‘CommissionRates’, !product, !month);

Here Commissions should be fed from Sales, but only if the commission rate for the product in the month where the sale occurs is non-zero.

This can be accomplished by a feeder of the form:

[‘Sales’] => db( cubename, !salesperson, !product, !month, ‘Commissions’);

Here, cubename needs to be a conditional expression that results in a blank if the corresponding commission rate is zero. Since a blank cube name causes the feeder to be ignored, the required effect is produced.

Thus, if we insert a conditional expression in place of cubename, then the complete feeder would read:

[‘Sales’] => db( if( db(‘CommissionRates’, !product, !month ) = 0, ‘ ‘, ‘SalesBySalesperson’), !salesperson, !product, !month, ‘Commissions’);

The problem arises when the commission rates change. If a commission rate were to change from zero to a non-zero value, the required feeder would not be initiated, resulting in a cell that should have a value being left as zero.

This could be overcome by writing a feeder in the CommissionRates cube that fed all sales people, however this would result in over feeding.

Another alternative is to either:

  • resave the rules for the SalesCommission cube
  • executing a CubeProcessFeeders for the Sales cube from a Turbo Integrator process
  • restarting the TM1 server

The most efficient of these is the CubeProcessFeeders TI process.

For further discussion on conditional feeders please see this post.

Syntax of CubeProcessFeeders

CubeProcessFeeders ( cubename ); 

Where cubename is the name of your cube.

Example of CubeProcessFeeders

CubeProcessFeeders ( 'SalesCommission ');

Of course we will often just have a generic Cube Process Feeders TI. and include a parameter for the cube name. Then it can be called from any other TI or just run by the TM1 administrator directly.

Need Help with Feeders?

Feeders can be a real pain to both create correctly and to diagnose when things don’t work as expected. If you need some help, please ping us and we’d be delighted to help.

  • This field is for validation purposes and should be left unchanged.

Post Sections

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

Log In