DISAGGREGATE

DISAGGREGATE('OriginalNode', "Level", 'DistributionNode')

In Assumptions & result sets

Legacy function

This function is sustained only for compatibility purposes. Please use the newer function DISTRIBUTE instead.

The DISAGGREGATE function 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 rolled up to the levels of the Original Node. Can be used to redistribute values that are not available on a certain level. An example is the assignment of OPEX to products according to their revenue.

Use this function when you need to allocate values from a higher level to a more detailed level based on an existing distribution.

Parameters

OriginalNodeNode referenceRequired
Input node, specified using the node name in single quotes (e.g. 'OPEX')
LevelLevel nameRequired
Level by which the OriginalNode should be disaggregated, i.e. the level which should exist on the node after application of the function (e.g. "Product")
DistributionNodeNode referenceRequired
Node by whose distribution the values of the OriginalNode should be disaggregated, specified using the node name in single quotes (e.g. 'Revenue')

Watch out

  • 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 rolled up to match the level of OriginalNode.

Example

Disaggregate annual OPEX to products

This example shows how annual OPEX values are distributed to the product level based on the revenue mix in each year. The distribution is calculated separately for each year because both input nodes share the 'Year' level.

Input node: 'OPEX'

YearValue
20254000
20268000

Input node: 'Revenue'

YearProductValue
2025M1100
2025M2300
2025Z3400
2026M1200
2026M2600
2026Z3800

Formula: DISAGGREGATE('OPEX', "Product", 'Revenue')

YearProductDISAGGREGATE Result
2025M1500
2025M21500
2025Z32000
2026M11000
2026M23000
2026Z34000

See also

DISTRIBUTE
When you want the modern replacement that covers the same use case with clearer behavior and fewer legacy limitations.
ROLLUP
When you want to aggregate values to a higher level instead of distributing them to a more detailed one.
Was this page helpful?