> 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/documentation/plan/planning-sheets/how-tos/allocate-values-across-dimensions.md).

# Plan across multiple dimensions with cubes

Cubes support allocating plans, budgets, forecasts, and other data input measures across multiple dimensions. Allocate values based on the proportional weights of a driver measure, such as revenue, headcount, or historical sales, to distribute data accurately across business units, products, regions, or time periods. Allocations can also use dimensions and driver measures that are not part of the current report, enabling flexible, multi-dimensional planning without requiring complex report layouts.

Cubes support bi-directional updates between connected planning sheets at different levels of granularity. Changes made in a detailed planning sheet are automatically aggregated and reflected in the original planning sheet. Likewise, changes made in the original planning sheet are distributed to the connected planning sheet based on the configured allocation rules. This ensures that detailed and summarized plans remain synchronized while preserving the defined allocation logic.

This approach simplifies complex allocation scenarios while ensuring that plans remain consistent across multiple dimensions and planning models. Learn more about how [cubes and multi-dimensional allocations work](/documentation/plan/planning-sheets/concepts/cube.md).

#### Configure a data input cube <a href="#configure-a-cube" id="configure-a-cube"></a>

Create cube measures by adding breakdowns to data input measures. When creating 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. Create a numeric data input measure. Learn more about how to [create a numeric data input measure](/documentation/plan/planning-sheets/how-tos/adding-business-logic-and-formulae/measures-and-columns/insert-manual-input-columns/insert-manual-input-columns.md).
2. Go to **Data Input** > **Enable Multi-Dimension Allocation**. Select **Add breakdown**.

<figure><img src="/files/tqS2Och5df3ZnDCNLmFk" alt=""><figcaption></figcaption></figure>

3. To allocate values based on the weights of a driver measure, select the required measure from **Reference measures** in the **Add breakdown** window. Learn more about [weighted allocation](/documentation/plan/planning-sheets/concepts/cube.md#driver-based-allocation-model).
4. The row dimensions in the current planning sheet are automatically added in the first breakdown.

<figure><img src="/files/oYHAcRvEGUzTrI3jJdJR" alt=""><figcaption></figcaption></figure>

5. Click **Add** to create new dimension breakdowns.

The parent row dimension from the current planning sheet is required to create breakdowns based on dimensions that are not part of the sheet.

<img src="https://docs.fabricplan.com/~gitbook/image?url=https%3A%2F%2F257222532-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FUtolck8kt8atqxFPsEBn%252Fuploads%252FKEfZnkX1sAMiiiwLCdZQ%252Fimage.png%3Falt%3Dmedia%26token%3D73334978-3a9a-44d4-bba7-0403a0389826&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=acde9da2&#x26;sv=2" alt="" width="375">

### Build multidimensional forecasts

In enterprise planning, high-level targets (such as revenue or budget) must be distributed across complex business structures—like regions, product lines, departments, and time periods. Multidimensional or cube forecasting automates this process by linking data across different levels of detail into a unified model. Learn more about [creating forecasts](/documentation/plan/planning-sheets/how-tos/forecast-data-to-predict-future-trends.md).

Instead of manually maintaining separate spreadsheets for each dimension, cube forecasting enables real-time distribution and aggregation across multiple dimensions simultaneously.

The following steps outline how to create and import a forecast cube.

1. In the model ribbon, select **Forecast,** enter the forecast measure name, and set the forecast period.

<figure><img src="/files/16xmlPMA4lkKJSg4kyuZ" alt=""><figcaption></figcaption></figure>

2. Enable the **Multi-Dimension Allocation** toggle. Select the driver measure from **Reference Measures**.  Driver measure weights allocate forecasts across dimensions. Learn more about [weighted allocations in cube measures](/documentation/plan/planning-sheets/concepts/cube.md#how-allocation-works).&#x20;

{% hint style="info" %}
Reference any measure in the semantic model as the weighting measure for allocation. The measure does not need to be included in the current planning sheet.

Ensure the reference measure contains values for the forecast period in the current planning sheet. Otherwise, cube creation fails during allocation.
{% endhint %}

In this example, **Units Sold** is used as the reference measure. Although it is not assigned to the current planning sheet, it is still used to determine the allocation weights.

<figure><img src="/files/9gbo9KJl5LKNP4AP49Lc" alt=""><figcaption></figcaption></figure>

3. A breakdown defines how a forecast is allocated across different dimension hierarchies (such as *Region > Country > Product Line*) using a driver measure for proportional weighting. The row dimensions assigned to the planning sheet are automatically treated as the first breakdown.&#x20;

{% hint style="info" %}
To create the cube, ensure each breakdown contains the top-level dimension. In this example, *Region*.
{% endhint %}

To allocate values across additional dimensions, select **+ Add** to create a breakdown.

<figure><img src="/files/ozYh1FcyKc5oamreacyM" alt=""><figcaption></figcaption></figure>

4. Configure the measure or formula to populate closed forecasts.

<figure><img src="/files/F9S92CQk7eUi84JLwyhG" alt=""><figcaption></figcaption></figure>

5. In this example, to create a blank forecast, leave the **Open Periods** configuration unchanged and select **Save**.

<figure><img src="/files/1g5spzcN3ro6SqJtVmIt" alt=""><figcaption></figcaption></figure>

6. After you create the forecast cube, you can see it in the **From Sheets** section of the **Data** pane.

<figure><img src="/files/Q3mBDqpHnfEqBqkuDgv0" alt=""><figcaption></figcaption></figure>

7. Enable **Column Subtotal** in the **Planning** ribbon and enter the forecast value. Plan automatically distributes the value equally among child rows and columns. Select the distribution icon to choose an alternate distribution method.

<figure><img src="/files/VRn53IxSK9UF1bk6ubuu" alt=""><figcaption></figcaption></figure>

8. After configuring a cube measure, it can be used in other planning based on the configured breakdowns. For instance, a cube created in a region-level plan can be imported into a product-level plan. Create a second planning sheet and assign measures and dimensions.

{% hint style="info" %}
When importing a forecast cube, the column dimensions in the second sheet must match those of the original sheet. &#x20;

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, if the cube breakdown is configured with the dimensions Region, Country, Province, and City, the planning sheet can include any subset of these dimensions, such as Country > City or Province, regardless of the order.
{% endhint %}

In this example, the original planning sheet uses Year > Quarter > Month as the column hierarchy, so the second planning sheet uses the same column dimensions.&#x20;

One of the breakdowns is Region > Category > SubCategory. The second planning sheet uses Category and SubCategory as the row dimensions.

<figure><img src="/files/zb0l4PP4UYVFslQhBNsz" alt=""><figcaption></figcaption></figure>

9. Go to **Data** > **From Sheets** > **Cube**. Select the cube measure to import. From **More options (…)**, select **Insert as measure**. This action imports the forecast cube measure. The values are pre-allocated based on the cube configuration.

<figure><img src="/files/t6TwrYRFhipzzxWLf85g" alt=""><figcaption></figcaption></figure>

10. Cubes support bi-directional updates between planning sheets of different granularities. Update a value in the cube measure in the second planning sheet. In this example, update the *Profit Forecast* from 431k to 425k.

<figure><img src="/files/KMlzSBkjqCmFDjbHbekp" alt=""><figcaption></figcaption></figure>

11. The cube aggregates the updated value and propagates it to the original planning sheet. In the same way, any updates made to the original planning sheet cascade to child sheets.

<figure><img src="/files/4hxwaJb73mOQ2OSple2J" alt=""><figcaption></figcaption></figure>

### FAQ

#### What is a Cube measure, and how is it different from a regular measure?

A regular measure pulls a value directly from the semantic model or a planning sheet at whatever granularity it exists. A Cube measure is a calculated allocation layer - it takes a measure with limited granularity and distributes it across additional dimensions using a reference measure as the basis for distribution, without altering the source data.

#### Can I add more than one breakdown to the same Cube measure?

Yes - you can add multiple breakdowns, which are useful when you need to segregate planning into groups such as geography, category, or customer type. However, all breakdowns must have a common dimension.

#### If I create a data input cube measure using the Copy from another series option, and the base measure is later updated, does the cube measure change too?

No - the base measure only populates the cube measure at the point when it is created. After that, the cube measure becomes its own independent editable series. A later change to the base measure would not retroactively update the cube - the two are no longer linked once the copy is made.

#### What would happen if you tried to pull a cube measure into another sheet using From Sheets instead of Cube Measures?

The values would not populate. Without the Cube breakdown, Infobridge has no way to resolve the measure at the additional dimensions - it can only read the measure at the grain at which it was created. This is the core problem Cube Measures solves.

#### When a subtotal value is updated, why do individual category combinations under the subtotal value update too?

The update is applied to the subtotal, and the cube breakdown distributes that change proportionally down to every dimension category combination under the subtotal, based on their share of the reference measure.

#### Why do I need to use the Insert as measure option to import cubes, rather than pull in the same way other referenced measures are?

Inserting it specifically as a Cube measure is what preserves its two-way behavior. If it were pulled in as a regular read-only reference, the consuming sheet would only display the value - it can't be edited there. Inserting it through Cube Measures keeps the breakdown-based link intact, so an edit on the consumer flows back to the origin just as an edit on the origin flows forward to the consumer.


---

# 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/documentation/plan/planning-sheets/how-tos/allocate-values-across-dimensions.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.
