If you are unable to create a new account, please email support@bspsoftware.com

 

News:

MetaManager - Administrative Tools for IBM Cognos
Pricing starting at $2,100
Download Now    Learn More

Main Menu

Allocation to a node in TM1

Started by overflow.au, 13 Jan 2009 09:55:19 PM

Previous topic - Next topic

overflow.au

Hi there,

Looking at allocating some data from one cube to another in TM1, and needing to allocate from a high level (by category) to populate ranges at a lower level.  How is this best done?  I would like to include in the rules area of the cube.

JC :-\

dusherwo

This is quite a common thing to do with TM1 rules. I wouldn't think of it as the first task to tackle if you are new to TM1 rules though.
The approach I follow is to build a dimension with
Input
Driver
Output

Input takes the value you wish to allocate. This should be taken into an N level item in the (say) product dimension you are allocating over, and it should be outside the main chart. Say 'NoProduct'.
Driver is taken from the (normally various) sources of allocation bases you need to use.
Then:
['Output'] = n:
  ['Input','No Product'] *
  ['Driver'] \
  ['Driver','All Products']
  ;

You need a feeder too. I tend to find that feeding from input is preferable. So

['Input','No Product'] => ['Output','All Products'];

HTH

overflow.au

Thanks for that.  Could I clarify a couple of things.

The cubes have the following dimensions: Cube A has dimensions for Month, Product, and Sales Details.  Cube B has dimensions for Month and Product Category (which is a hierarchy of Product).  Do I need to put the dimension you suggest into Cube A or B?

Is the 'All Products' actually the Category list, and how is the Driver assigned or defined? Is this a numerical assigment or a text definition?

Given that I am effectively trying to use a rule to perform a routine (and ongoing) spread to leaf level, is there an alternative way of doing this?

JC (still a little  :-\)...

 

dusherwo

It looks to me as if the numbers you are allocating are in Cube B and you want to allocate them into something like Cube A. But to do any allocations you need drivers at the level to which you are allocating. Are these in Cube A? If so, you would build a Cube C dimensioned by
Month
Product - with parents matching Product Categories in Cube B
DriverLine (Input/Driver/Output)
It gets a bit more fiddly now because you need to find the amount to allocated for each N level of product. You will probably need to assign Category as an attribute of Product to get this to work properly, as (I think) you have multiple hierarchies of product.

Then
['Input'] = <_not N or C> db('B',!Month,!Product);
# this will pull in values where product matches product category
['Driver'] = n:db('A',!Month,!Product,'<whatever sales measure you are using>');

['Output'] = n:
  db('C',!Month,attrs('Product',!Product,'Category'),'Input') *
  ['Driver'] \
  db('C',!Month,attrs('Product',!Product,'Category'),'Driver')
  ;

And the feeders probably need adjusting since the numbers are coming in further up, so in A:
['Sales Measure you are using'] => DB('C',!Month,!Product,'Driver');
and in C:
['Driver'] => ['Output'];

I hope that doesn't put you off  :) . The major benefit of doing it via rules is that the whole calculation is provable and traceable. And once you've got your head round it you can take the same approach to a much more complex level if you need to.

Good luck!