> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/user-guide/data-views.md).

# Build 360 Table

Causal discovery requires a single, coherent table that represents the domain you want to model. If your data lives across multiple datasets — customers in one file, transactions in another — you need to join them before the engine can work.

RootCause calls this joined table a **Data View**. The friendly name for it in this workflow is the **360 Table**: one row per entity of interest, with all the variables you want to analyze in a single flat structure.

The good news: RootCause builds it for you. After the ontology runs, it has already identified which datasets share common identifiers and can recommend a join recipe ready to use in one click.

***

## The recommended path

After the ontology finishes processing, open the **Datasets** section in the top navigation bar.

<figure><img src="/files/oby2E0DWQPkYGTsZwCu2" alt="Datasets list showing two auto-generated single-source views and the joined Customer Subscription info × Customer Details dataset"><figcaption><p>Two single-source Data Views were created automatically during ontology processing; the joined dataset was created from the ontology's recommendation.</p></figcaption></figure>

You will see:

* **Auto-generated views** — one per dataset, created automatically, with zero operations (a direct pass-through to the raw data).
* **Recommended Datasets** — on the Ontology page's right panel, RootCause identifies datasets that share an identifier and proposes a join. Click the recommendation to create the joined view instantly.

The recommendation is derived from the ontology: when two datasets share the same identifier concept (for example, `Customer Id`), RootCause proposes joining them on that field, with the larger dataset as the main table.

***

## The Operations editor

Clicking a recommendation creates the view and opens it in the Operations editor.

<figure><img src="/files/aIbmFZgv68e9rzKC31Zq" alt="The joined dataset with its data preview and the Operations panel showing two source datasets and an auto-generated left join on Customer Id"><figcaption><p>The joined view with its Operations panel: two source datasets joined on Customer Id, 4,998 rows out. The join type, key columns, and table order are all editable.</p></figcaption></figure>

The editor shows your recipe as a visual graph:

* **Source nodes** (blue cards) — one per input dataset.
* **Operation nodes** — transformations applied in sequence. The recommended view starts with a single JOIN node: *"Left join on Customer Subscription info - customerID = Customer Details - customerID."*
* **Bezier edges** connecting each source into the join.

**The recipe is fully editable.** Each node has pencil (edit) and trash (delete) controls. You can change the join type from left to inner, switch which table is primary, or add further operations — a filter to exclude inactive records, an aggregate to roll up transaction-level data to customer level, or a derived column calculation.

The accept-as-is path takes one click. The edit path uses the same interface. You do not need to rebuild from scratch to change what the platform inferred.

***

## Adding operations manually

To build a view from scratch, or to add steps to an existing view, use **Add Source** and **Add Operation** in the top-right of the Operations panel. Available operations include:

| Category               | Operations                                                                                                              |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Data combination       | Join, Time Series Join, Concatenate                                                                                     |
| Filtering and cleaning | Filter, Remove Duplicates, Drop Nulls, Impute Nulls, Clip Outliers                                                      |
| Reshaping              | Aggregate, Sort, Transpose Panel                                                                                        |
| Column manipulation    | Split Column, Drop Columns, Replace Values, Cast Type, Normalize                                                        |
| Categories             | Map Categories                                                                                                          |
| Time series            | Interpolate Time, Time Series Aggregate, Frequency Analysis, Cyclic Aggregate, Vertical Diff, Date Span, Cumulative Sum |
| Arrays                 | Decompose Array, Consolidate into Array, Explode Array (long), Aggregate Array                                          |
| Custom logic           | SQL Query                                                                                                               |

The specialized time-series and array operations, briefly:

* **Time Series Join** — join two sources on time, with exact, nearest (as-of), or granularity-based matching.
* **Transpose Panel** — collapse a long-format panel dataset into a single wide-format time series, one column per environment and value.
* **Frequency Analysis** — run FFT or Welch's method over a time series to surface its frequency content.
* **Cyclic Aggregate** — group rows by a cycle component (hour of day, day of week, …) and aggregate, revealing the shape of a cycle.
* **Vertical Diff** — the change from each row to the next along the time axis (first difference).
* **Date Span** — the interval between two date columns in the same row, in the unit you choose.
* **Cumulative Sum** — a running total along the time axis.
* **Decompose Array** — spread an array column into one scalar column per position, or one boolean column per distinct value.
* **Consolidate into Array** — merge several scalar columns into one array column.
* **Explode Array (long)** — unnest an array column into one row per element.
* **Aggregate Array** — reduce each row's array to a single value (mean, sum, min, max, median, or count).

Operations execute in sequence — each takes the output of the previous step as input. Preview results after each addition to verify the output before continuing.

***

## What's next

When the view looks right, you're ready for causal discovery. It runs when you build a Digital Twin from this view — either click **Create & build twin** on the Ontology page's recommended dataset, or start from **Digital Twins → New Digital Twin** and pick the view in the builder.

Next step: [Step 4: Build Causal Graph](/user-guide/causal-graph.md)
