Skip to content
Your repository

Your repository

Why a repository

A semantic model is code: it gets reviewed, versioned, branched and reverted. Keeping it in a SaaS database turns it into something you can only look at from inside that SaaS. In a repository you can look at it from anywhere, and it still exists the day you stop paying.

So in qontexta the Semantic Repository is the source of truth. The application keeps an index so it can list and search quickly, but that is a cache: it is rebuilt by reading the Semantic Repository and it is never the authority.

What it looks like

It is the standard Cube project layout. Nothing proprietary:

model/
  cubes/          # the technical entities: table or SQL, joins, measures, dimensions
    orders.yml
    customers.yml
  views/          # the business semantic views: the curated layer people query
    revenue.yml
cube.js           # configuration; qontexta serves it over the API
README.md

A cube and a semantic view, abridged:

cubes:
  - name: orders
    sql_table: analytics.orders
    title: Orders
    description: A confirmed order. Excludes abandoned carts.
    measures:
      - name: total_amount
        sql: amount
        type: sum
        title: Total amount
        description: Net revenue excluding tax, recognised on the order date.
        meta:
          unit: "€"
          owner: Finance
views:
  - name: revenue
    title: Revenue
    description: What the company bills, by region and by month.
    cubes:
      - join_path: orders
        includes:
          - total_amount
          - region
          - order_date

Both halves of every definition live in the same file: the SQL and the meaning, in Cube’s own fields (title, description, meta). Validation state goes in meta.qontexta, so the sign-off travels with the definition: clone the repository and you know what is signed and what is not.

Every change is a commit

Saving in the application is committing. The message says what changed and who changed it, and the model’s history is Git’s history — git blame included.

And it works both ways: if someone edits the YAML from their terminal or merges a pull request, qontexta hears about it through a webhook, reindexes that branch and the semantic engine starts serving the new version. Going through the application is not required.

What is stored outside the Semantic Repository

Only what cannot live in a public repository: your Data Platform credentials (encrypted), plus the pointer to the Semantic Repository itself. Nothing of the model.

Unlinking

Unlinking deletes the pointer and the credentials. The repository and everything in it stay yours.