Semantic Model Setup
Overview of the Semantic Model in RevOS — the Cubes tab, Graph tab, relation types, and links to CLI docs for authoring cubes.
Building a robust analytics layer starts with a clear, reusable semantic model. This guide shows how to turn raw, replicated tables into business‑ready entities, link them together, and expose trusted metrics.
Key Concepts
Term | Definition |
Entity | A logical representation of a table / dataset. Contains dimensions, measures, and relations. |
Dimension | A descriptive attribute – date, company name, status, etc. |
Measure | A numeric metric, usually aggregated – sales amount, deal count, … |
Relation | A logical link between two entities. Always declared in both directions. |
Semantic Model | A connected set of entities forming a domain graph. |
Access control – Only users with the Admin role can manage the semantic model.
Interface Overview
Below is a quick tour of the modeling workspace.
Data Model sidebar
Use the Semantic Model icon (two connected circles) to open the modeling area from anywhere in the app.
Cubes tab
Lists all cubes deployed to your organisation. Click any row to open the read‑only cube definition.
Graph tab
Interactive map of all cubes and their relations.
Managing cubes
Cubes are authored and deployed via the CLI. See the RevOS CLI docs →
Relation Types and When to Use Them
Type | Quick description | Example | How to set |
one_to_one | Each A has exactly one B | Company ↔️ Company profile | "relationship": "one_to_one" |
one_to_many | One A owns many B | Company → Invoices | "one_to_many" |
many_to_one | Many A refer to one B | Invoice → Company | "many_to_one" |
360‑degree rule – Declare each relation in both entities. If deals has many_to_one to companies, then companies must have the mirror one_to_many to deals. Otherwise the graph builder cannot find a path.
Modeling many‑to‑many
Direct many_to_many is not supported. Instead create a junction entity – a link table with pairs of keys. Both original objects connect to it with one‑to‑many / many‑to‑one relations, keeping source tables clean and avoiding duplicates.
Example (HubSpot deals ↔️ companies):
- Create entity
company_deal_linkbased on the companies table.
- In SQL unnest the
deal_idsJSON array:UNNEST(deal_ids) AS deal_id.
- Relations:
companies↔️company_deal_link–one_to_many/many_to_one.deals↔️company_deal_link–one_to_many/many_to_one.
Dimensions and Measures
For the full reference on defining dimensions, measures, and their types — see the RevOS CLI docs →
Last updated on May 11, 2026