Reference Updated March 26, 2026

DISAGGREGATE

Category: Assumptions & result sets

Legacy function

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

Overview

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 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 when you need to allocate values from a higher level to a more detailed level based on an existing distribution.

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

Syntax

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

Parameters

  • OriginalNode: Input node, specified using the node name in single quotes (e.g. 'OPEX')

  • Level: 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")

  • DistributionNode: Node by whose distribution the values of the OriginalNode should be disaggregated, specified using the node name in single quotes (e.g. 'Revenue')


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('OriginalNode', "Product", 'DistributionNode')

YearProduct→ DISAGGREGATE Result
2025M1500
2025M21500
2025Z32000
2026M11000
2026M23000
2026Z34000

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