“Nobody trusts the numbers in the report.”
Two reports give three answers, so the leadership team goes back to spreadsheets. Almost always a modelling problem, not a Power BI problem.
Semantic model rebuild
The Microsoft stack, end to end
Reports, dashboards, semantic models
Lakehouse, pipelines, OneLake
Azure SQL, Synapse, Storage
SharePoint, Excel, Teams
CRM and ERP data
Microsoft, Power BI, Microsoft Fabric, Azure and Dynamics 365 are trademarks of the Microsoft group of companies.
Sound familiar?
None of them are really about Power BI. They are about what sits underneath it.
“Nobody trusts the numbers in the report.”
Two reports give three answers, so the leadership team goes back to spreadsheets. Almost always a modelling problem, not a Power BI problem.
Semantic model rebuild
“The refresh takes four hours and keeps failing.”
Usually a model doing work at refresh time that should have been done upstream, or query folding quietly broken in Power Query.
Performance rescue
“We bought Fabric and don't know what to do with it.”
Capacity is running, the bill is arriving, and nothing is landing in OneLake. You need the first pipeline built properly, as a pattern to copy.
Fabric setup
“One person built it all and they've left.”
An undocumented model nobody can safely change. We reverse-engineer it, document the lineage and hand it back maintainable.
Handover & documentation
What good looks like
Headline numbers first, the trend behind them, then the detail — and a panel showing whether the data can be trusted today.
The four numbers a GM is accountable for, above the fold, every time.
Year-to-date means the same thing on every page, because it is defined once.
Last refresh, row counts, failures. If the data is stale, the report says so.
Under the hood
Dashboards get the applause. This is what decides whether yours is still fast and correct in two years.
// Rolling 12-month revenue that respects whatever
// filters the user has applied on the page.
Revenue Rolling 12M =
VAR LastVisibleDate =
MAX ( 'Date'[Date] )
VAR Window =
DATESINPERIOD ( 'Date'[Date], LastVisibleDate, -12, MONTH )
VAR Result =
CALCULATE ( [Revenue], Window )
RETURN
IF ( NOT ISBLANK ( [Revenue] ), Result ) // Incremental load that folds back to the source.
// RangeStart/RangeEnd let Fabric partition the table
// so a refresh touches days, not years.
let
Source = Sql.Database ( ServerName, "Sales" ),
Orders = Source{[Schema="dbo", Item="FactOrder"]}[Data],
Filtered = Table.SelectRows (
Orders,
each [ModifiedUtc] >= RangeStart and [ModifiedUtc] < RangeEnd
),
Typed = Table.TransformColumnTypes (
Filtered,
{{"OrderDate", type date}, {"NetAmount", Currency.Type}}
)
in
Typed Microsoft Fabric
Fabric rewards a clean structure and punishes an improvised one — in both correctness and capacity cost. This is the shape we build to.
Services
From a blank canvas to something an executive actually opens on Monday morning. Built on a proper star schema so it stays fast as the data grows.
Inherited something slow, wrong, or held together with hope. We find why, fix the model underneath, and leave the numbers reconciled.
SSRS, Tableau, Qlik, Cognos or a decade of Excel. We do not re-draw them one for one — we work out which ones anyone still reads, then rebuild those properly.
Lakehouse, pipelines, medallion structure and governance — built once, properly, as a pattern your team can extend without us.
The layer that decides whether self-service works or quietly produces wrong answers. Named the way your business actually speaks.
A fixed-price week that tells you what you have, what it costs, what is broken and what to do about it. Yours to act on with or without us.
Your team builds the next twenty reports, not us. Pitched at whoever is actually going to maintain this after we leave.
How we engage
You should never be asked to sign an open-ended hourly rate against a system nobody has looked at yet.
Free. Half an hour on what you are trying to see and why you cannot see it. Often ends with us telling you it is smaller than you feared.
Fixed price, fixed scope, one week. You get a written assessment and a prioritised plan — yours whether or not you continue with us.
Fixed price, scoped from what the health check found. Delivered in fortnightly increments you can see and react to, not one big reveal.
Documentation, standards and training so your team owns it. Or a monthly retainer if you would rather we kept the lights on.
Most BI consultancies start at the semantic model and hope the data arrives clean. Migration and lineage is our day job — we can fix the problem at source instead of writing DAX to work around it.
Pretty dashboards are the easy half. We are judged on whether the numbers reconcile, the refresh stays under control and the next person can maintain it.
Every engagement produces artefacts you keep: a documented model, a lineage map, a benchmark, a runbook. No black boxes.
Not sure whether you need a rebuild or a tidy-up? Start with a conversation — it is free, and we will tell you honestly if the job is smaller than you think.
Book a Power BI consultationGet moving
Tell us what you are trying to see, what you have now, and roughly when you need it. We will come back within one business day.