Data modelling

Definition
Data modelling is turning messy raw data into clean, defined tables that carry one trusted meaning wherever they are read.

Why it matters

Data modelling decides whether a question like "what is revenue this month" gets one answer or three. When every dashboard reads raw data directly, each one rebuilds the logic slightly differently. A model settles it once. Without one, a business spends hours arguing about whose number is right instead of acting on any of them.

It matters more with AI and automation. An agent asked to report on revenue will use whichever definition it finds first, so the definitions have to be findable and unambiguous.

How to apply it

  • Model a handful of core entities the business actually runs on, not every table that exists.
  • Decide the grain of each table: one row per what? One row per customer, per subscription or per invoice line.
  • Write business rules once inside the model and give each a plain-language name.
  • Test the model with simple checks, such as no duplicate customer IDs and no invoice without a customer, and keep definitions under version control so changes are reviewable.
  • Point every dashboard and report at the model, never at the raw source tables.
  • Revisit definitions when the business changes, such as a new plan or region.

What it is

Raw exports and event logs are full of duplicates, odd field names and inconsistent values. A data model sits on top and describes the business in a few core tables, such as customers, subscriptions and invoices. It also states how they connect: one customer can have several subscriptions, and each subscription produces many invoices.

A model also holds the rules that give numbers their meaning. What counts as an active customer? When does a trial become a customer? How is a refund treated? These rules are written once, inside the model, rather than rebuilt in every report.

Common mistakes

  • Modelling every table that exists instead of the few the business runs on.
  • Leaving the grain of a table unclear, so a join silently multiplies rows and inflates revenue.
  • Writing rules inside individual dashboards, which recreates the many versions of one number.
  • Skipping tests, so a change in the source system breaks reports unnoticed.
  • Naming columns for the tool they came from, not for what they mean.
  • Treating it as a one-off project. A model needs an owner and a review when plans or regions change.
Worked example

Suppose a twelve-person SaaS company has three revenue reports that disagree. Sales counts a deal as won at signature, finance at the first invoice, and the marketing dashboard counts trials as customers. The team builds a small model in Google BigQuery with three core tables: customers, subscriptions and invoices. Each table has one row per thing it describes, so the subscriptions table holds one row per subscription. The rule for an active customer is written once: a paying subscription with an invoice in the last 30 days. Trials sit in their own table. Tableau dashboards read only from these tables. In this example, all three reports now show the same monthly recurring revenue, and the Monday meeting moves on from whose number is right to what to do about it.

Tools in the example

Some links are affiliate links: we may earn a commission at no cost to you. It never decides a ranking. How we work with partners

  1. Article

    Data warehouse

    The place a model's tables usually live.

  2. Article

    Single Source of Truth

    The same principle, applied to where a fact is defined.

  3. Article

    ETL / ELT

    How raw data reaches the warehouse before it is modelled.

  4. Article

    Self-serve analytics

    What a clean model makes possible for non-specialists.