# Part 4: Build the Driver Model
URL: https://docs.valsight.ai/part-4-build-the-driver-model/
Description: In this part, you create two models and build the cause-effect relations of the revenue model.
In this part, you create two models and build the cause-effect relations of the revenue model.

**Models** in Valsight define the **underlying calculation logic** that connects data, business logic, and drivers as the basis for scenario simulation.

For detailed reference on any of the concepts here, see [Modeling](/modeling/).

## Watch the video guide

Video: [DriverModel](https://vs-documentation-assets.fsn1.your-objectstorage.com/videos/6895697921_DriverModel.mp4)

## The model structure

Driver models in Valsight follow the "Valsight Fish" structure, read from right to left.

![Valsight Fish diagram showing model layers from Data base and Driver on the right through Business models and P\&L to KPIs on the left](./images/6892978181.png)

For this tutorial, you will create two models:

* **500\_Data**: contains the base nodes that pull in the Excel data
* **100\_P\&L**: contains the drivers, calculation logic, and the revenue result

## Steps

### Create the models

1. Open the **Model overview** from the left menu bar.
2. Click **Add** to create the two models:

| Field       | `500_Data`           | `100_P&L`                       |
| ----------- | -------------------- | ------------------------------- |
| Description | Base data from Excel | Revenue calculation and drivers |
| Submodels   | None                 | `500_Data`                      |

3. Click **Create**.

### Build the `500_Data` model

The data model contains two base nodes that connect to the uploaded Excel data: one for volume and one for price.

1. Open the **500\_Data** submodel by clicking its name.
2. Click the **Node** button in the **action bar** at the bottom of the canvas.
3. Create two **Data nodes**:

| Node            | Unit             |
| --------------- | ---------------- |
| `Volume (Base)` | `Quantity`       |
| `Price (Base)`  | `EUR / Quantity` |

4. Select a node, click the **Data** button in the function editor, choose **Data source, Table and Measure** in the dialog, then click **Insert** to connect it via the [DATA](/data/) function:

| Node            | Formula                                              |
| --------------- | ---------------------------------------------------- |
| `Volume (Base)` | `DATA("TutorialData", "Price and Volume", "Volume")` |
| `Price (Base)`  | `DATA("TutorialData", "Price and Volume", "Price")`  |

Use **Data Preview** to confirm that both nodes show 2025 values.

### Build the 100\_P\&L model

Switch to **100\_P\&L** using the **model selector** in the header at the top left of the Model Editor. Create the following nodes:

| Node               | Type       | Unit             |
| ------------------ | ---------- | ---------------- |
| `Volume`           | Standard   | `Quantity`       |
| `Market Growth`    | Simulation | `Percent`        |
| `Price`            | Standard   | `EUR / Quantity` |
| `Price Adjustment` | Simulation | `EUR`            |
| `Revenue`          | Standard   | `EUR`            |

Then set each node's formula:

| Node               | Formula                                                    |
| ------------------ | ---------------------------------------------------------- |
| `Volume`           | `ROLLFORWARD_ADVANCED('Volume (Base)', 'Market Growth')`   |
| `Market Growth`    | `EXPAND(0, "Year", "Region")`                              |
| `Price`            | `ROLLFORWARD_ADVANCED('Price (Base)', 'Price Adjustment')` |
| `Price Adjustment` | `EXPAND(0, "Year", "Product", "Country")`                  |
| `Revenue`          | `'Volume' * 'Price'`                                       |

[ROLLFORWARD\_ADVANCED](/rollforward-advanced/) carries the 2025 base values forward into future years; [EXPAND](/expand/) creates a dimensional structure for an empty node. `Price Adjustment` must match the dimensions of `Price (Base)`.

Use **Data Preview** to confirm that Revenue equals Volume times Price.

## What you have done

* Created two models: `500_Data` and `100_P&L`
* Connected Excel data with [DATA](/data/)
* Used [ROLLFORWARD\_ADVANCED](/rollforward-advanced/) to project values forward
* Created simulatable drivers with [EXPAND](/expand/)
* Calculated Revenue as Volume times Price
