DISAGGREGATE
Basic Overview
The function is sustained only for compatibility purposes. Please consider using the newer function DISTRIBUTE instead. The DISTRIBUTE function is easier to use, offers the full functionality of DISAGGREGATE and more.
Description  Disaggregates the values of the Original Node for the given Level based on the value distribution from the Distribution Node  in relation to the aggregated values of the Distribution Node when rolledup to the levels of the Original Node. Can be used to redistribute values, which are not available on a certain level. An example is the assignment of OPEX to products according to their revenue. 
Notes  The function groups the values according to all shared levels of OriginalNode and DistributionNode. In the example given here, this is the 'Year' level, and hence the distribution is applied to each year individually. If both nodes share a hierarchy, but have different levels, the DistributionNode needs to have the finer level, and is rolledup to match the level of OriginalNode 
Signature  DISAGGREGATE(OriginalNode, Level, DistributionNode) 
Parameters 

Example
Input
OriginalNode
Year  OPEX 
2015  4000 
2016  8000 
DistributionNode
Year  Product  Revenue 
2015  M1  100 
2015  M2  300 
2015  Z3  400 
2016  M1  200 
2016  M2  600 
2016  Z3  800 
Output DISAGGREGATE('OriginalNode', "Product",'DistributionNode')
Year  Product  Measure 
2015  M1  500 
2015  M2  1500 
2015  Z3  2000 
2016  M1  1000 
2016  M2  3000 
2016  Z3  4000 