Feeder problem in allocation model
Posted: Thu Mar 02, 2017 10:37 am
Hi all,
We have this allocation model that was built a while ago. Since I have some spare time I decided to do a small review of this model. There are massive amounts of overfeeding in this cube which bothers me. But I cant really think of a good way to get around it.
Basically we have 2 cubes. The first one gets a value loaded into it from accounting. We then want to re-allocates this for our operational follow up. We do this using keys in a separate cube.
AllocaitonCalcCube Rules:
['AllocatedMeasure'] = N:
DB('AllocationCalcCube', !Account, !Period, 'AllCountries', 'AllProfitCenters', 'GLValueMeasure')
* DB('AllocationKeyCube', !Period, !Country, !ProfitCenter, 'KeyMeasure' ) ;
FEEDERS;
['GLValueMeasure'] => ['AllocatedMeasure', 'AllCountries', 'AllProfitCenters'] ;
The problem with the above is that only half of the countries and profitcenters has a key in it. So I feed all these countries and profitcenters that don't have values.
Here is what Im currently thinking:
1, ['GLValue'] => could be changed to ['GLValue', 'AllCountries', 'AllProfitCenters'] This would mean feeding from a consolidation. But since I specify the targets it should work. This wouldn't really fix overfeeding since Im still feeding as many cells. But maybe there is a performance gain to not having the feeder refire if any of the countries or underlying profitcenters are changed. As long as the consolidation is <> 0.
2, Pulling the key to the allocation cube and use it as a feeder. So in the allocation cube I would have:
['FeedKey'] = N:
IF(
DB('AllocationCalcCube', !Account, !Period, 'AllCountries', 'AllProfitCenters', 'GLValueMeasure') <> 0,
DB('AllocationKeyCube', !Period, !Country, !ProfitCenter, 'KeyMeasure'),
STET ) ;
But then I would just add a feedkey measure and need to figure out how to feed that one. Also I would be multiplying a lot of data from the key cube to the allocation cube. So probably not a good idea.
3, Doing this with TI-processes
If the performance was really bad this is always the go-to. But not really required at this moment. Also some of the keys are manual inputs that are tweeked. The users do want instant feedback on the allocated results.
4, Reducing the targets
Im creating a routine to clear out old an unused profitcenters and countries from the dimensions. This will decrease the overfeeding a bit.
This seems like something that would come up quite often in TM1 development. So Im hoping someone in the community out there has a good idea on how to tackle this. And I know you're thnking "Why doesn't the guy just test it all". Well I dont have a test environment... its not my decision. So testing different feeders will require a lot of restarts of the production server. Figured I would ask you guys first to avoid downtime. And a good answer to this might be worth sharing in the community. Hopefully Im missing something totally obvious.
Thanks
Dave
We have this allocation model that was built a while ago. Since I have some spare time I decided to do a small review of this model. There are massive amounts of overfeeding in this cube which bothers me. But I cant really think of a good way to get around it.
Basically we have 2 cubes. The first one gets a value loaded into it from accounting. We then want to re-allocates this for our operational follow up. We do this using keys in a separate cube.
AllocaitonCalcCube Rules:
['AllocatedMeasure'] = N:
DB('AllocationCalcCube', !Account, !Period, 'AllCountries', 'AllProfitCenters', 'GLValueMeasure')
* DB('AllocationKeyCube', !Period, !Country, !ProfitCenter, 'KeyMeasure' ) ;
FEEDERS;
['GLValueMeasure'] => ['AllocatedMeasure', 'AllCountries', 'AllProfitCenters'] ;
The problem with the above is that only half of the countries and profitcenters has a key in it. So I feed all these countries and profitcenters that don't have values.
Here is what Im currently thinking:
1, ['GLValue'] => could be changed to ['GLValue', 'AllCountries', 'AllProfitCenters'] This would mean feeding from a consolidation. But since I specify the targets it should work. This wouldn't really fix overfeeding since Im still feeding as many cells. But maybe there is a performance gain to not having the feeder refire if any of the countries or underlying profitcenters are changed. As long as the consolidation is <> 0.
2, Pulling the key to the allocation cube and use it as a feeder. So in the allocation cube I would have:
['FeedKey'] = N:
IF(
DB('AllocationCalcCube', !Account, !Period, 'AllCountries', 'AllProfitCenters', 'GLValueMeasure') <> 0,
DB('AllocationKeyCube', !Period, !Country, !ProfitCenter, 'KeyMeasure'),
STET ) ;
But then I would just add a feedkey measure and need to figure out how to feed that one. Also I would be multiplying a lot of data from the key cube to the allocation cube. So probably not a good idea.
3, Doing this with TI-processes
If the performance was really bad this is always the go-to. But not really required at this moment. Also some of the keys are manual inputs that are tweeked. The users do want instant feedback on the allocated results.
4, Reducing the targets
Im creating a routine to clear out old an unused profitcenters and countries from the dimensions. This will decrease the overfeeding a bit.
This seems like something that would come up quite often in TM1 development. So Im hoping someone in the community out there has a good idea on how to tackle this. And I know you're thnking "Why doesn't the guy just test it all". Well I dont have a test environment... its not my decision. So testing different feeders will require a lot of restarts of the production server. Figured I would ask you guys first to avoid downtime. And a good answer to this might be worth sharing in the community. Hopefully Im missing something totally obvious.
Thanks
Dave