> For the complete documentation index, see [llms.txt](https://docs.fabricplan.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fabricplan.com/planning-sheets/how-tos/measure-and-row-based-planning/multidimensional-planning-and-forecasting/multidimensional-expense-allocation.md).

# Multidimensional expense allocation

Data input cubes enable multidimensional planning by connecting planning sheets with different dimensional granularities, allowing data to flow between summarized and detailed plans. Instead of maintaining separate planning sheets and manually reconciling changes, data input cubes automatically distribute updates to detailed planning sheets based on allocation rules and aggregate changes back to higher-level plans.

Business plans are often created at a higher level of the organization but must be allocated to lower levels for detailed planning and analysis. In this article, learn how to use cubes to allocate OPEX from the country level to cities and products using multidimensional allocations.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FTm5qPJtRl9SuHLyVxImN%2Fimage.png?alt=media&amp;token=791dada8-5bdf-40d6-b08b-d56f4144c351" alt=""><figcaption></figcaption></figure>

### Prerequisites

* The column dimension is a standard date hierarchy (for example, year > quarter > month).

### Configure a cube

When you create a data input measure, define one or more breakdown dimensions to convert it into a cube measure. The measure can then store and allocate values at multiple levels of dimensional granularity.

1. In the **Planning** ribbon, go to **Insert Column** > **Number** > **Insert a new empty series**. For more information, see [Create a numeric data input measure](/planning-sheets/how-tos/measure-and-row-based-planning/insert-manual-input-columns/insert-manual-input-columns.md).
2. Select **+Add Breakdown** from the **Enable Multi-Dimensional Allocation** section. This action opens the **Add Breakdown** window where you configure the cube.
3. To allocate values based on the weights of a driver measure, select the required measure from **Reference measures**. In this example, use *Revenue Actual* as the reference measure. To learn more, see [weighted allocation](/planning-sheets/concepts/measure-and-row-based-planning/cube.md#how-allocation-works).

{% hint style="info" %}
The reference measure doesn't need to be part of the current planning sheet. You can select any measure from your semantic model as long as it doesn't have any null values for the breakdown dimensions. If the reference measure has null values for any of the breakdown dimensions, allocation fails.
{% endhint %}

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F3X3fbTYk38HIALNzbKvu%2Fimage.png?alt=media&amp;token=49ad7e8b-8be8-4c14-875e-f71c227d48ef" alt=""><figcaption></figcaption></figure>

4. Allocate plans, budgets, and forecasts across dimensions that aren't included in the current planning sheet by adding breakdowns. The row dimensions in the current planning sheet are automatically added in the first breakdown- in this example, *Region\_Name* and *Country\_Name*. Select additional dimensions, such as City\_Name, Channel\_Name, and Product\_Name, to distribute values at a finer level of granularity.

{% hint style="info" %}
Cubes supports planning across unrelated dimensions. For example, updates made to a revenue plan by product, geography, and channel can automatically flow to finance dimensions such as GL Account and Country, enabling seamless bidirectional allocations and enterprise-wide planning across business functions.
{% endhint %}

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FG3hQGdU1qEFzEkOteuVI%2Fimage.png?alt=media&amp;token=c6c19e71-c462-428e-aead-02cffe1b0da9" alt=""><figcaption></figcaption></figure>

In this example, the product-level planning sheet also contains region dimensions, so we've added the product-level dimensions to the same breakdown. Select **Add** to create new dimension breakdowns as shown in the following image.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FQEaNg9mMDYgFdMr2kMjf%2Fimage.png?alt=media&amp;token=0a732f3a-6ccd-4cb3-810c-43262442fa8c" alt=""><figcaption></figcaption></figure>

5. Create the breakdown and the measure.
6. After you create a cube measure, you can see it under **Data** > **From Sheets** > **Cube**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F8B6rXwo1LlZsheFSWjIh%2Fimage.png?alt=media&amp;token=fcff04e6-8fe4-4f93-9eed-0626462563c0" alt=""><figcaption></figcaption></figure>

7. Enter a value at the grand total level. In this example, we've copied the *Operating Expense Actual* value so that we can use the cube to allocate this value across additional dimensions. Plan automatically distributes the value equally among child rows and columns. Select the distribution icon to choose an alternate distribution method.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FokWEEQhItq37mkA22oET%2Fimage.png?alt=media&amp;token=cd2b0e38-8df3-4915-ba96-3683f3f70b73" alt=""><figcaption></figcaption></figure>

8. Create a calculated measure to compute *Gross Margin* at the region level.

{% hint style="info" %}
This step is optional. It is not required to create cubes.
{% endhint %}

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FtKa8QWaKjFmFItRyme7k%2Fimage.png?alt=media&amp;token=3b681075-b300-4cf9-9dec-f644bd4c3b58" alt=""><figcaption></figcaption></figure>

### Import a cube measure into another planning sheet

After you configure a cube measure, you can use it in other planning sheets with different granularities based on the configured breakdowns. In this example:

* You create a cube in a region-level plan.
* You configure breakdowns on city, sales channel, and product dimensions.
* You enter data for the cube measure.
* You import the cube measure into the product-level plan.

The values you enter in the region-level planning sheet allocate to the product dimensions based on the weights of the reference measure. When you import the cube into the product-level planning sheet, plan automatically populates the entered values.

{% hint style="info" %}
When you import a cube measure, the row dimensions in the planning sheet must be a subset of the dimensions configured in the cube breakdowns. The dimensions can be in any order. For example, the cube breakdown is configured with the dimensions Region, Province, and City. The planning sheet can include any subset of these dimensions, such as Region > City or Province.
{% endhint %}

1. Go to **Data** > **From Sheets** > **Cube**. Select the measure to import. From **More options (...)**, select **Insert as measure**. Alternatively, in the **Model** ribbon, go to **Cube** > **Import Cube Measure** and select the measure to import.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FypY3kknKZDpVJaEosRpL%2Fimage.png?alt=media&amp;token=1cb974df-6069-40a1-a81a-3f5e6fdd9b75" alt=""><figcaption></figcaption></figure>

This action imports the cube measure into the product-level planning sheet. Organizations often plan values at higher levels of the business hierarchy and allocate them to lower levels for detailed planning. In this example, a cube allocates operating expenses (OPEX) from the region level to product-level dimensions.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fh57pdR6en2cW2PryiBDz%2Fimage.png?alt=media&amp;token=e7162f78-6182-4127-922d-e5d9c3145115" alt=""><figcaption></figcaption></figure>

2. Plan distributes cube measure values equally to breakdown dimensions such as *city*, *sales channel*, *product family*, and *product*. Select the distribution icon to choose an alternate distribution method.

{% hint style="info" %}
Redistributing imported cube values affects only the unrelated dimensions and preserves existing allocations.
{% endhint %}

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FUX9NifpQCgLmsU74hFqn%2Fimage.png?alt=media&amp;token=5c74e3b2-7210-4a5c-bdb9-0676bd1d8bc0" alt=""><figcaption></figcaption></figure>

This action redistributes imported cube values across the product dimensions while preserving region-level allocations. The following screenshot demonstrates how the cube value remains unchanged for the *Asia* and *China* rows even after redistribution.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fr1mwyqdJ4yT2IO13NDgO%2Fimage.png?alt=media&amp;token=153d136e-9e60-47a4-8b4b-26d4da1c80cd" alt=""><figcaption></figcaption></figure>

3. In the **Planning** ribbon, go to **Show Columns** and deselect the measures that are not required for planning - in this example, the native measure *Operating Expense Actual*.
4. Create a calculated measure to compute *Gross Margin* at the product level.

{% hint style="info" %}
This step is optional. It is not required to create cubes.
{% endhint %}

### Update cube values

Cubes support bi-directional updates between planning sheets of different granularities. In this example, update the *Opex Allocation* for China from 24.3m to 25m in the region-level planning sheet.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FUKpX6NIXzg8Iz4KUlfn8%2Fimage.png?alt=media&amp;token=0033e38c-66e2-43b1-b021-35cce76730e5" alt=""><figcaption></figcaption></figure>

The cube allocates the updated value to the additional dimensions in the product-level planning sheet. Plan automatically recomputes calculated measures, such as *Gross Margin*, to reflect updates to cube values.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fr61yaLNzvIWHI8ZM1yqo%2Fimage.png?alt=media&amp;token=8d3006bd-edf1-4ddf-912c-c664f118dbdb" alt=""><figcaption></figcaption></figure>

Similarly, the cube automatically aggregates updates made at a lower level of granularity and propagates the aggregated values to the planning sheet at the higher level of granularity.

### Best practices for setting up a cube

* *Use a valid allocation driver*: Always configure a single, clearly defined allocation driver (reference measure) such as prior year actuals, revenue, or units. Ensure the driver reflects real-world business weighting logic.
* *Allocate only across nonblank driver cells*: Allocation only occurs where the selected driver measure has valid (nonblank) values. Avoid allocations across intersections where the driver is null, as it can cause allocation errors or unintended distributions.
* *Restrict input by using **Allow Input – Based on Formula***: To prevent users from entering or allocating values on invalid intersections, configure an input rule such as `[Driver Measure]!==BLANK`.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FsGqfbwcVYOd4VXiE5fKi%2Fcube-best-practice.png?alt=media&amp;token=80443653-bbb0-40af-b668-11df2bcade2c" alt="" width="379"><figcaption></figcaption></figure>

By configuring **Allow Input – Based on Formula**, cells that don't satisfy the specified condition are automatically locked. This configuration ensures that users can allocate only at dimension intersections that meet the defined driver criteria (for example, where the reference measure is nonblank).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fabricplan.com/planning-sheets/how-tos/measure-and-row-based-planning/multidimensional-planning-and-forecasting/multidimensional-expense-allocation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
