Pan Innovation House Pan Innovation House
CUSTOM SOFTWARE · DATA WAREHOUSE

Data Warehouse and Data Modelling: The Layer Beneath the Report

We build the layer beneath the report: data is pulled from source systems by ETL or ELT, modelled across raw, processed and presentation layers, and stored together with its history. Metric definitions are fixed in a single data dictionary, and quality checks catch silent corruption while the data is still being loaded.

In most businesses, getting two different numbers for the same question is almost the rule. Ask how many tonnes were shipped last month and sales gives one figure, production another, accounting a third. Nobody is doing anything wrong; everyone is looking at a different source with a different definition. Sales takes the dispatch note date, accounting the invoice date, production the date the goods left the line. On top of that come retrospective corrections: when an old record is updated in the ERP, last month's report quietly changes and the number discussed in the previous meeting can never be found again. Half the meeting is spent arguing about which figure is right, and the decision slips to the following week. After a while everyone starts keeping their own spreadsheet in their own way; the company no longer has a single number, but several separate truths that never check each other. The problem is not the reporting tool — it is that the layer beneath the report was never built at all.

The second problem is running reports directly against the live system. ERP and production databases are designed for transactions; they are fast at creating records, updating them and querying them one at a time. Run a report at month end that scans twelve months and the same database slows down, and the user on the shop floor feels it at the terminal screen. More importantly, a transactional database is not obliged to keep history: when a customer's trading name changes, the old invoices appear under the new name too; when a product's price group is updated, last year's analysis is calculated with today's group. Then there is the fact that everyone who writes a new report rediscovers the same table joins from scratch; three people do the same job three different ways and the results do not agree. Each of these three problems looks bearable on its own; together they destroy any trust in reporting and management decisions revert to gut feel.

A data warehouse (DWH) moves this work into a separate layer. Data is pulled from the source systems at regular intervals and held in a separate store in layers: the raw layer keeps the data exactly as it stands in the source, the processed layer cleans it and aligns it to shared definitions, and the presentation layer models it in the form the report will use directly. Transforming data before writing it is called ETL; writing it first and transforming it inside the warehouse is called ELT, and which one fits is chosen according to the structure of the source and the volume of data. None of the source systems is changed; the ERP, the production tracking system and the accounting software carry on doing their own job, while the warehouse sits alongside them and only on the read side. The real value of the warehouse lies in two things: it keeps history, so last month's number stays last month's number; and it fixes metric definitions in one place, so the word revenue means the same calculation in every report.

Let nothing on this page go unsaid: a data warehouse does not clean dirty data, it only makes it visible. A customer account opened three times in the source is three records in the warehouse as well; the answer to that is master data management, and it is a separate job. Nor is a warehouse real-time on its own; how often each piece of data is refreshed is a deliberate decision, because keeping every metric to the minute produces unnecessary cost. A warehouse does not replace dashboards either; the Data, BI and Reporting page, which covers dashboards, KPI screens and report distribution, sits on top of this layer and the two pages should be read together. And not every company needs one: if you have a single ERP and a handful of standard reports, building a warehouse brings more maintenance load than it solves. The right question is not should we build a data warehouse; it is how many sources, how much history and how many differing definitions we have to produce reports from. In discovery, we discuss that first.

Who is it for?

Who is Data Warehouse and Data Modelling (DWH) a good fit for?

Management teams getting different numbers to the same question

Businesses where sales, production and accounting quote different figures for the same period. The problem here is usually not that someone is making mistakes, but that the definitions are not written down anywhere. When the warehouse is built, these definitions are discussed one by one, the departments reach agreement, and the definition is put on record. The first tangible gain of the project is often that agreement rather than any software.

Manufacturers and exporters running several systems at once

If ERP, production tracking, e-commerce, marketplaces and spreadsheets still kept by hand are all in use at the same time, answering a single question means opening several screens and then combining them manually. Bringing those sources together in a shared model is an infrastructure job that has to be solved before any dashboard is designed, and it cannot be sustained by copy and paste.

Companies running reports on the live database

Plants where the ERP slows down when the month-end report runs and users sit waiting at their terminals. In these companies the warehouse separates the reporting load from the transactional system: the ERP only does its own job, and heavy queries run in a separate store. That relieves the shop floor and lets the scope of reporting be widened without the fear of ruining the user experience.

Businesses left with no history

Set-ups where the source system overwrites the old value, so last year's figure comes out differently today. Any company that wants year-on-year comparison, seasonal analysis, budget-versus-actual variance or customer-level trend tracking eventually runs into the need for historical storage. By the time the need is noticed the history is already gone; building it early is the only answer.

What we build

What we deliver within Data Warehouse and Data Modelling (DWH)

Source inventory and data extraction (ETL / ELT)

We map which data comes from where, including ERP, production tracking, e-commerce, accounting, files and email attachments. Extraction is incremental wherever possible, that is, based on changed records, and the read load is scheduled for hours that will not strain the transactional system. Where a source has no API, a read-only replica, a database view or file transfer is used. The load frequency is set separately for each source; tying them all to the same schedule produces needless load.

Layered modelling: raw, processed, presentation

In the raw layer, data is stored exactly as it stands in the source, with no interpretation; when something goes wrong, that is the only place you can go back to. In the processed layer, fields are cleaned, units and code lists are harmonised and business rules are applied. In the presentation layer, fact and dimension tables — a star schema — are built; reports only ever see this layer. That way, when the underlying structure changes, dashboards do not break: only the intermediate layer is updated.

Historical storage and change tracking

Information that is overwritten in the source is kept with its history in the warehouse. With the slowly changing dimension (SCD) method, a customer's former region, a product's former price group and a supplier's former trading name stay on record; reports for past periods can be reproduced as they stood at the time. Where needed, month-end or period-end snapshots are taken. As a result, a report for a closed period gives the same answer regardless of the corrections made since.

Data dictionary and metric definitions

For every metric — revenue, waste, open orders, downtime — the definition, the calculation rule, the table it comes from and its owner inside the organisation are written into a single dictionary. Anyone writing a new report does not reinvent that definition; they find it ready. This dictionary is not a technical document; it is the shared language the departments have agreed on. In practice, the most lasting output of the project is often this dictionary rather than the code.

Data quality checks

Automated tests run on every load: is a mandatory field empty, is a key duplicated, is the row count outside the expected range, is a referenced record missing, are amounts unexpectedly negative. When a test fails, the presentation layer stays as it was and an alert goes to the relevant person; broken data does not flow silently into a dashboard. Working with yesterday's data for one morning is always less damaging than producing a wrong report.

Load monitoring, re-runs and data lineage

Which load ran when, how long it took and how many rows it processed are all tracked. If a load is interrupted, re-running the same job does not duplicate data; the pipelines are built so that they can be re-run from the start. Lineage shows which table a number on a dashboard came from, and which source that table came from. The question where does this figure come from is then answered in minutes rather than days.

Access, permissions and personal data

Who can reach which layer of the warehouse is defined; the raw layer usually stays open to the technical team only, while business units see the presentation layer. Fields containing personal data are masked where necessary, or never carried into the presentation layer at all. Retention periods and deletion rules are part of the model from the outset, not a clause added later. That way, obligations under KVKK (Turkish data protection law) do not turn into a problem that has to be unpicked once the warehouse has grown.

Technologies

The technologies we work with

  • PostgreSQL
  • Google BigQuery
  • ETL / ELT pipeline
  • dbt
  • Apache Airflow
  • Star schema (dimensional modelling)
  • CDC (change data capture)
  • Parquet / columnar storage
  • Python
  • Metabase
  • Docker
Process

How we move from discovery to go-live

  1. 01

    1. Discovery: questions, sources and definitions

    We start from the question, not the table: which decision needs which figure, where is it taken from today and why does it not add up. Source systems, access methods, data volumes and quality risks are mapped. The areas that will be left out of the first release are written down explicitly as well. Keeping the scope narrow is the fastest and cheapest way to get the first report you can trust.

  2. 02

    2. Raw layer and reliable extraction

    Read-only connections to the sources are set up, and incremental extraction and the load schedule are settled. No reports are produced at this stage; the aim is for the data to arrive complete, repeatable and without straining the transactional system. Depending on the number of sources, this step takes a few weeks in most projects. Rush it and every later stage is spent chasing data differences nobody can explain.

  3. 03

    3. Modelling and fixing the definitions

    The processed and presentation layers are built, fact and dimension tables are designed, and shared dimensions are brought into a single form across all subject areas. Metric definitions are agreed department by department and written into the data dictionary. Definitions that cause disagreement are put on record and the work does not move on until they are closed; postponing that argument means producing a dashboard nobody later trusts.

  4. 04

    4. Quality checks and parallel validation

    Quality tests are switched on and alerts are wired up. The new warehouse is run in parallel with the existing reports for a while, the differences that appear are examined one by one and the reason for each is written down. Finding differences is normal; more often than not, it is the old report's error that surfaces at this stage. Old reports are not switched off and the warehouse is not declared the single source until validation is complete.

  5. 05

    5. Go-live, monitoring and handover

    The load schedule, the alerts and the access permissions are opened up. The model, the data dictionary and the load pipelines are documented. Your team receives a written handover covering how to add a new source, how to re-run a load and what to do when a quality test fails. After that, support continues with maintenance, monitoring and extension into new subject areas.

Frequently asked questions

Common questions about Data Warehouse and Data Modelling (DWH)

The site already has a Data, BI and Reporting page — what is the difference?

The two pages do not sit on top of each other; one sits beneath the other. The BI and reporting side covers dashboards, KPI screens, role-based reports and automated distribution — that is, it shows the result. This page covers the layer that feeds those dashboards: where the data is pulled from, how it is modelled, how its history is kept and how its quality is checked. At small scale the two are built together in a single project and there is no need to discuss them separately. Once the number of sources, the need for history and the number of reports grow, the warehouse becomes a job in its own right, a system with its own maintenance.

Should we build a data lake or a data warehouse?

A data lake accumulates raw files as they are, with the schema decided later; it is strong on unstructured data such as images, logs and sensor streams. A data warehouse holds modelled data with fixed definitions, ready for reporting, and it is the single place business units can use directly. For manufacturing and commercial reporting, what most businesses need is the warehouse. We add a lake in front of the warehouse as a landing area when high-volume sources such as sensor and image data come into play; the two are not rivals, but two layers standing one behind the other.

Once the warehouse is built, will our data be clean?

No. A warehouse makes dirty data visible; it does not correct it. If the same customer has been created three times in the source, there will be three records in the warehouse too; if product codes are not standardised, the report will not be standardised either. Quality tests put these problems in front of you with a number for the first time, that is, they produce a diagnosis; the correction is made in the source system or in the master data management (MDM) layer. We say this at the outset, because projects that start with the expectation of let us build a warehouse and the data will sort itself out end in disappointment without exception.

Is it really necessary at our scale?

Not every company needs one. If you use a single ERP, look at a handful of standard reports and have limited need to compare history, building a separate warehouse brings more maintenance load than it solves; in that case a reporting layer on its own is enough, and cheaper. A warehouse makes sense when the number of sources grows, when the same metric is calculated differently in different places, when history has to stay unchanged, or when reports are straining the transactional system. If we do not think it is needed at discovery, we say so plainly and propose something smaller.

Will our ERP slow down, and how often is the data refreshed?

The aim is precisely the opposite: taking the heavy reports out of the transactional system relieves the ERP. Extraction is done through a read-only connection, a replica or change data capture (CDC), and is scheduled for low-intensity hours wherever possible; the load window is set around your shift pattern. Freshness is decided metric by metric: a dispatch dashboard may be hourly, financial reports nightly, some analyses weekly. Keeping everything real time is technically possible, but for most metrics it produces a cost with nothing to show for it.

What do we end up with?

Incremental load pipelines from your sources; a modelled warehouse made up of raw, processed and presentation layers; dimension tables that keep history; a data dictionary in which the metric definitions are written down; quality tests and alerts that run on every load; a load monitoring screen and data lineage; documentation covering the procedures for adding a source and re-running a load. The source code, the data model, the documentation and all the data in the warehouse belong to you; the data sits on your own infrastructure or in the cloud of your choice.

Contact

Let us talk about your Data Warehouse and Data Modelling (DWH) project

In a 30-minute discovery call we listen to what you need and tell you honestly whether custom development or an off-the-shelf product is the better answer.

Related

Related pages and guides

Master Data Management (MDM)

We repair the record-keeping in which the same customer has been created three times and the same material sits under two codes. With matching rules, a similarity score and a review queue, duplicate records are deduplicated, a golden record is produced and distributed back to the source systems, and a similar-record warning steps in whenever a new record is created.

Details

Medical Imaging Management (PACS) Integration

We do not build diagnostic imaging software; your existing PACS stays where it is. What we build is the layer that closes the gap between the device worklist, the patient record, the order, the report and sharing: the image is linked to the right patient, pending orders become visible, and the retention and backup status of the archive becomes auditable.

Details

Student Information System (SIS)

We build student information systems that bring admissions, enrolment, class placement, timetabling, attendance registers, marks, report cards, parent communication and instalment tracking together on a single record. It is designed around your institution's own calendar and your own fee policy; you do not have to fit into the mould of an off-the-shelf package. The source code and the data belong to the institution.

Details

Laboratory Information Management (LIMS)

We build laboratory information management systems that run every step on a single record, from the moment a sample is received through to the certificate of analysis: barcoded sample tracking, a method library, instrument connections, specification checks, staged approval and an audit-ready record structure.

Details

Professional Services Automation (PSA)

We bring the chain of quote, project, time record, milestone claim and invoice together on a single record. In agencies, consultancies, engineering practices and software firms, who spent how long on which job, resource utilisation and project profitability become visible while the work is still running, not once it has finished.

Details

Hospital and Clinic Information System (HBYS) Companion Layer

We do not replace your hospital information management system; we build an operations layer that runs alongside it. Appointments and resource utilisation, treatment plan tracking, reminders, consumable and implant stock, the patient journey in health tourism and the management dashboard all come together in this layer. The source code and the data stay with you.

Details
Call Free strategy call