INSIGHTS · DATA SYSTEMS

We need better reporting. Do we need Power BI, a warehouse, or both?

"We need better reporting" hides three different problems. Separating the reporting layer, the model and the integration tells you what to buy — and in what order.

The Bredge··8 min read

“Better reporting” can be a problem in any layer. The reporting tool renders faithfully; the fix is usually the model or the integration beneath it.
On this page

The short answer

“We need better reporting” sounds like one problem. It is usually three, wearing the same words. Until you separate them, any tool you buy is a guess.

The three problems are these. First, a reporting-layer problem: the report itself is slow, confusing, or wrong, even though the data behind it is fine. The reporting layer is the software where charts and dashboards are built and read; a BI tool (business intelligence tool) such as Power BI is one. Second, a model problem: the same metric is calculated differently in different places because nothing defines it once. Third, an integration problem: the data you need lives in several systems that are never combined reliably, so someone stitches it together by hand.

These map onto different fixes. A reporting-layer problem is fixed inside the BI tool. A model problem is fixed by defining each metric once. An integration problem is what a data warehouse addresses. So the honest answer to “Power BI, a warehouse, or both?” is that it depends which of the three problems you actually have, and in what proportion. Work out that first, and the tool question answers itself.

What this usually looks like

The request nearly always arrives as a tool question. “Should we move to a warehouse?” Or “should we switch BI tool?” The framing has already skipped the diagnosis and jumped to a purchase.

It is easy to see why. One vendor demonstration makes a warehouse look like the answer to everything. Another makes a shinier dashboard tool look like the answer to everything. Both demonstrations are honest about their own layer and silent about the other two. Meanwhile the real symptoms are mixed together: reports that take thirty seconds to load, a revenue figure that differs between two dashboards, and a finance analyst who spends the first three days of every month exporting and pasting spreadsheets.

Those three symptoms live in three different layers. Buying one product to cure all of them is how organisations end up with an expensive warehouse feeding reports that are still slow, or a new BI tool that renders the same untrustworthy number in a nicer font.

Separate the three problems first

You can sort the symptoms yourself in an afternoon, before you talk to any vendor. The goal is not to pick a product. It is to label each complaint by the layer it belongs to, so you can see which layer carries most of the pain.

Symptoms cluster by layer in recognisable ways. A reporting-layer problem looks like a slow visual over a small dataset, or a single measure that is wrong in one report only. A model problem looks like the same metric showing two values, or every analyst re-writing the same definition in their own query. An integration problem looks like manual exports, and questions you cannot answer because two systems will not join.

What the answer tells you

Once the complaints are sorted, the shape of the answer appears. Read your tally like this.

  • Mostly reporting-layer. You do not need a warehouse, and you probably do not need a new BI tool. Fix the report and the model inside the tool you already own. If the complaint is speed, the cause is usually the data model rather than the visuals, which is the subject of why Power BI is slow.
  • Mostly model. You need each metric defined once, in agreed terms, and reused everywhere. This is a modelling job, not a purchase, and for a while it can live inside the BI tool’s own model.
  • Mostly integration. This is the case a warehouse is built for. Confirm you genuinely have the integration problem before you buy one, because a warehouse you do not need is pure cost. That test is set out in whether you need a warehouse at all.

Most organisations have some of all three. That is normal. The value of the tally is not a single verdict; it is knowing the proportion, and therefore the order in which to fix things.

Reporting layer, model, and integration

Underneath the tool names are three layers that stack on top of one another. Each has a distinct job, and each can be the one that is broken.

The reporting layer is where reports and dashboards are built and read. Power BI is one such tool; the same reasoning applies to any BI tool. Its job is to render whatever the layer below returns. A faithful renderer cannot invent a correct number from a wrong input, which is why a reporting-only fix so often fails to settle an argument about figures.

The model is where data is shaped and metrics are defined. The important idea here is the semantic model: one governed place where a metric such as revenue or active customer is defined once, in plain terms, owned by a named person, and reused by every report. Power BI has its own model built in, which the tool now calls a semantic model, so for a handful of sources you can define metrics once inside Power BI without any warehouse at all.

The integration layer is where separate source systems are combined into one query-ready shape. This is what a data warehouse is: a central database that pulls data from many systems and holds it modelled and joined, ready to query. Modern warehouses are usually loaded by ELT (extract, load, transform): raw data is copied into the warehouse first, then transformed inside it. The copying is done by managed connectors, pre-built links that pull from a source such as a CRM on a schedule, without you writing or maintaining the extraction code.

So when is the BI tool’s own model enough, and when do you need a warehouse? Power BI can import, model, and define metrics for a few sources feeding one team perfectly well. It outgrows that point when sources multiply, when data volumes grow past what the tool can refresh reliably, when the same modelled data is needed by more than one tool or team, or when you need history that the source systems overwrite. At that point the modelling and integration belong in a warehouse, and the BI tool reads from it rather than doing the heavy lifting itself.

The model layer is worth making concrete. Below, one canonical revenue metric is defined once as a view over a small star schema, a common warehouse shape with one central fact table of measured events surrounded by descriptive dimension tables.

-- One canonical revenue metric, defined once in the model layer.
-- fact_invoice_line has one row per invoice line (its grain);
-- the dimensions add date and customer context.
create view reporting.revenue_monthly as
select
  d.month_start,
  c.customer_id,
  sum(f.amount_gbp) as revenue_gbp
from   fact_invoice_line f
join   dim_date     d on d.date_key     = f.invoice_date_key
join   dim_customer c on c.customer_key = f.customer_key
where  f.is_intercompany = false
group  by d.month_start, c.customer_id;

The point of the view is not the SQL. It is that revenue is defined in exactly one place, with the intercompany exclusion written down once. Every report then reads reporting.revenue_monthly instead of re-implementing the rule, so two dashboards cannot quietly disagree. That is a model fix. Whether it lives in a warehouse view like this, or in the BI tool’s own semantic model, depends entirely on your integration answer above.

What good looks like

Good is not a particular product. It is three layers that are separable, each doing only its own job, each with an owner. In practice that looks like four things.

  • Each metric is defined once in the model and reused by every report, rather than re-written per dashboard.
  • Integration is only as heavy as it needs to be. Managed connectors and scheduled loads exist where several sources genuinely must be combined, and nowhere that a single source would do.
  • The reporting layer reads a governed model. It shapes and presents; it does not quietly re-derive the numbers.
  • Anyone can name the layer a given problem lives in, so the next fix goes to the right place instead of the newest tool.

When the layers are separate, a problem is diagnosable. A slow report is a reporting or model question. A number that differs between two reports is a model question. A source that will not join is an integration question. The tool argument stops, because the layer tells you where to look.

Common ways this goes wrong

  • Buying a warehouse to fix a slow report. Speed and clarity are reporting or model problems. Integrating more sources does not make a single report render faster; it adds cost the report never asked for.
  • Rebuilding reports on an unmodelled source. New visuals over an undefined metric produce fresh disagreement within weeks, because nothing has been defined once.
  • Switching BI tool to fix a model problem. A new reporting layer renders the same undefined metric just as faithfully as the old one did.
  • Building integration before you have the integration problem. A warehouse for two sources feeding one team is complexity and cost you inherit for no gain.
  • Defining metrics inside individual reports. The definition drifts the moment a second analyst writes a second query, whichever tool you use.
  • Doing all three at once, with no order. Layers depend on the ones beneath them, so an unordered rebuild fixes the visible symptom and leaves the cause in place.

When you genuinely need the warehouse too

Plenty of reporting problems never need a warehouse. The reporting layer and a well-defined model inside the BI tool carry a small organisation a long way. The warehouse earns its cost only when the integration problem is real and recurring, not occasional. These are the conditions that make it genuinely time.

A decision guide

Once each complaint is labelled by layer, the first move is usually clear. Use this as a quick lookup from the symptom you actually have.

SymptomUnderlying problemFirst move
Report is slow or cluttered, though the data is small and already in one placeReporting layerFix the report and its model inside Power BI; no new tool needed
The same metric shows different values in different reportsModelDefine the metric once in a governed semantic model
Every analyst re-writes the same definition in their own queryModelGovern one semantic model and point every report at it
You export and paste from several systems by hand each monthIntegrationA warehouse loaded by managed connectors and ELT
Two systems will not join, so a question cannot be answeredIntegrationCombine the sources into a warehouse, then model on top
All of the above, at scale, across teamsAll threeBuild bottom-up: integration, then the model, then the reporting

The order in the last row is the rule for every case. Fix the lowest layer that is genuinely broken first, because the layers above it can only ever be as reliable as the one beneath. A warehouse under an undefined metric still produces disagreement; a polished report over a warehouse you did not need is expensive decoration. Diagnose the layer, fix it in order, and buy only what the diagnosis actually calls for.

If the answer is an ordered build across model, integration and reporting, that sequencing is what a data project is for.data projects.