> 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/create-a-driver-based-model.md).

# Create a driver-based model

This article explains how to create a driver-based model.

A **driver model** is a type of model in which outputs are determined by key input variables called **drivers**. Examples include units sold, price per unit, headcount, production volume, etc. These inputs are linked to outputs such as revenue, costs, or demand through defined formulas or proportional logic.

For example:

* Revenue = Units Sold × Price
* Cost = Headcount × Cost per Employee

This allows you to quickly adjust assumptions and instantly see the impact across the model.

### How Model Builder supports driver models

Model Builder makes it easier to create driver-based models by:

* Linking input rows (drivers) to calculated rows
* Structuring dependencies using hierarchies
* Providing various driver methods to choose from.

### Create a driver-based model

Follow the steps mentioned in the [Create a model using Model Builder](/documentation/plan/planning-sheets/how-tos/create-a-model-using-model-builder.md) section and create the model you want.

For example, consider the model below.

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

{% code overflow="wrap" %}

```
Gross Revenue = Volume x Revenue per Barrel
```

{% endcode %}

In the above model, *Gross Revenue* is driven by two drivers— *Volume* and *Revenue per Barrel*.

Consider adding another input driver, such as **Price Growth %**, to evaluate how price changes impact gross revenue over time. In such scenarios, you can use driver-based modeling.

1. Create a new row to capture the driver output, such as **Final Gross Revenue**. Alternatively, you can reuse an existing row if it fits your use case.

{% hint style="warning" %}

#### Note

Ensure that the new row is created as an independent row to avoid circular references.
{% endhint %}

2. Configure the row properties for the *Final Gross Revenue* as follows:

* **Type**: Driver Input (as this row is driven by a driver input).
* **Driver Row**: Gross Revenue (one driver).
* **Driver Method**: Growth By Percentage.
* **Distribution Method :** You can also modify the distribution method while creating a driver-based model. To know more, refer to [Distribution](/documentation/plan/planning-sheets/how-tos/configure-row-properties-in-the-model.md#distribution).

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

3. Observe that an additional row is created as *Final Gross Revenue - Input*. This is used to enter the input values for driver rows.&#x20;

{% hint style="info" %}

#### Note

You can rename this newly created row. You can't edit other properties of this row as they are not applicable.
{% endhint %}

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

4. Go back to the planning sheet and enter the values in the newly created input row. You can enter values at either the total, subtotal, or individual column level.&#x20;

{% hint style="warning" %}

#### Note

The latest input values that you enter takes precedence. For example, if you first enter values at the period level and then enter values at the subtotal level, the planning sheet distributes the subtotal values across the periods and overwrites the values you previously entered at the period level.
{% endhint %}

5. After entering the *Price Growth %* values, the ***Final Gross Revenue*** row is automatically updated based on the selected driver method (10% growth in gross revenue).

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

6. Enter different driver inputs to calculate not only the change in revenue but also the net revenue and gross profit as price growth changes roll up to the top.

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

This shows how driver-based modeling helps you find outcomes based on key assumptions, so you can test different driver inputs without changing the core model.

Changes automatically roll up to top-level results and also distribute across periods, allowing you to perform fast, flexible what-if analysis directly in the planning sheet.


---

# 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/create-a-driver-based-model.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.
