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

# Create a row model

Use row-based modeling to organize the rows in a planning sheet into a hierarchical structure that represents business drivers and outcomes. Each row can act as a driver, allowing you to define relationships between inputs and calculated results. This approach helps you analyze how changes in one row affect related rows. For example, if **Cost** changes, you can see how the change affects **Net Profit** through the defined row relationships.

By using a row model, you can:

* Organize rows into meaningful driver hierarchies according to business requirements.
* Build complex planning logic from simple data structures.
* Perform planning, forecasting, and simulations at the row level.
* Analyze the cascading impact of changes to a driver across the entire model in a single view.
* Give business users greater control over planning drivers and assumptions.

### Create row-based model

1. Create a planning sheet by assigning the required dimensions and measures from the semantic model.

   Consider the following planning sheet with the **Chart of Accounts** as the row dimension, **Year**, **Quarter**, and **Month** in the **Columns** field, and **Actuals** in the **Values** field.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FzXhS54ED5mwmyg54FqIP%2Fimage.png?alt=media&amp;token=494a8e26-7ac1-436a-95f3-8dc0b01396fb" alt=""><figcaption></figcaption></figure>

2. Go to the **Model** ribbon and select **Row Model.** The **Model Builder** pop-up opens. Select **Enable**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FN7QMmUYaLiXyvIWWmsrD%2Fimage.png?alt=media&amp;token=5c08d77a-32bf-4f70-82ac-8eb8ff964dcb" alt=""><figcaption></figcaption></figure>

3. This action enables **Model Builder**. You can select **Back to Home** to save the report and return to this screen by selecting **Row Model** again.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FXHn11lMp6jAYPYuRB1aJ%2Fimage.png?alt=media&amp;token=30d212ba-be45-40e8-8414-91b827e9347d" alt=""><figcaption></figcaption></figure>

The model builder displays each row as a configurable driver for both open and closed periods, enabling you to build row-based models.

4. To build your model, delete all rows except the topmost *All* row. Select the row selection box in the column header, clear *All*, and then select **Delete**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FjxJeIVVDds4ToCoGcopv%2Fimage.png?alt=media&amp;token=2f9ca00b-fa10-4c65-8ec7-1f08505ac60f" alt=""><figcaption></figcaption></figure>

5. To create the row hierarchy, select the top row and then select **Bulk Insert**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F0XibYZyLEgMp9V5VbyaI%2Fimage.png?alt=media&amp;token=525d411a-ae7c-40ce-98dc-383c4c17a01c" alt=""><figcaption></figcaption></figure>

6. In the side panel, enter the rows you want to add. Use **Tab** to add a row as a child at the next hierarchy level.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FSYjTvF2UcwibUdfbxoBl%2Fimage.png?alt=media&amp;token=f5568aab-df2d-411e-b134-99bc10b8c29c" alt=""><figcaption></figcaption></figure>

7. Select **Add**. The rows are added 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%2FOLSSbYBnJycwLQcmNVHF%2Fimage.png?alt=media&amp;token=ac3f660d-3c52-4308-a7d8-998180266a4f" alt=""><figcaption></figcaption></figure>

### Configure the row model

Configure each row to build a simple **Profit and Loss (P\&L)** model.

1. Select the pencil icon on the topmost row (*All*) to configure its properties:

* **Row Name:** Enter *Operating Profit*.
* **Configure as:** Select **Formula**.
* Enter the formula in the formula box as, `[Operating Income] − [Operating Expense]`. As you type, suggestions pop up, and you can choose the rows from the **References** tab.

2. Select **Apply**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fx99VF7kq4uGvQjpBKwkV%2Fimage.png?alt=media&amp;token=a8f2eed5-81f5-491b-9fdc-6738e387a90d" alt=""><figcaption></figcaption></figure>

3. Configure all leaf rows one by one. Select the pencil icon on *Revenue* or select its **Type** dropdown. Configure the type as **Data Source**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FoXQ5TUEqK8oWROEKVs3d%2Fimage.png?alt=media&amp;token=f0c60d82-a363-41df-a482-55318d2771b3" alt=""><figcaption></figcaption></figure>

4. In **Choose Close Period Source Row**, select the corresponding source row from the semantic model, and then select **Apply**. It is automatically applied for the **Open Period** as well.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FpHTfDoBK3fV8vp645XQR%2Fimage.png?alt=media&amp;token=34eb03e5-6c74-402d-99e7-3da8634c425c" alt=""><figcaption></figcaption></figure>

5. Ensure its **Desired Trend** is **Increase** (since it is revenue), and then select **Apply** again.
6. Now, configure the *Purchase* row:

* Configure it as **Data Source**.
* Select the source row from the semantic model using the list.
* Set its desired trend as **Decrease** (since it is an expense).
* Select **Apply**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F1WeSrDRM9ygRdmaDldmb%2Fimage.png?alt=media&amp;token=157c115b-c7af-449e-872b-d45f88a0f4e7" alt=""><figcaption></figcaption></figure>

7. Repeat the above step for the remaining child rows, *Transportation*, *Adv & Promotion*, and *Salaries*.
8. Configure the parent rows:
   * **Operating Income:** Configure as **Aggregate** to aggregate its child rows. Select **Sum** as the aggregation type. Set the desired trend to **Increase**.
   * **Operating Expense:** Configure as **Aggregate** to aggregate its child rows. Select **Sum** as the aggregation type. Set the desired trend to **Decrease**.

The row model is completely configured 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%2F1wpDrJuaDNJQJ7bCm1my%2Fimage.png?alt=media&amp;token=de2c6272-85ff-4aca-a638-82349d8a8f6f" alt=""><figcaption></figcaption></figure>

Select **Back to Home** to return to the planning sheet and view the created model.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F7feRiLAXDXctagaV6Imh%2Fimage.png?alt=media&amp;token=e396ffb8-2030-4f8b-95ce-85dd96ce8354" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

### Note

* Select a row, and then select **Add Child** or **Add Sibling** to add a child row or a sibling row at the same hierarchy level.
* Configure a different setting for the **Open Period**, if required.
* Use the **Aggregation** dropdown to roll up the row's values across the selected time period (column dimension).
  {% endhint %}

#### How the row model helps analyze business performance

A row model helps you analyze how changes to individual drivers affect related rows in the hierarchy. When you modify a driver, the resulting changes flow through the related calculations and parent rows.

For example, if you increase **Revenue**, the model calculates the corresponding impact on **Operating Profit** based on the relationships and formulas defined in the model.

You can also use a row model to forecast, create multiple scenarios, and perform simulations to compare different driver assumptions and evaluate their impact on business performance.

### Next steps

* Forecast using a row model.
* Create and compare scenarios in the row model.

### Related content

* Row model configuration types.
* Create templates in the row model.


---

# 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/row-based-modeling/create-a-row-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.
