Skip to main content
Skip table of contents

DISAGGREGATE

Category: Assumptions & result sets

(warning) 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

Year

Value

2025

4000

2026

8000

Input node: Revenue

Year

Product

Value

2025

M1

100

2025

M2

300

2025

Z3

400

2026

M1

200

2026

M2

600

2026

Z3

800

Formula: DISAGGREGATE('OriginalNode', "Product", 'DistributionNode')

Year

Product

→ DISAGGREGATE Result

2025

M1

500

2025

M2

1500

2025

Z3

2000

2026

M1

1000

2026

M2

3000

2026

Z3

4000


Related Functions

Function

When to use instead

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.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.