Lorenzo Reale

Power BI consultant · UK and EU

Work

Demonstration project

Data Reconciliation Monitor

A morning check for Thornfield Retail Group, a fictional retailer whose warehouse is loaded every night from six source systems. It tells the business in plain words whether today's numbers can be used, and gives the data team the evidence behind the answer.

  • Client Thornfield Retail Group (fictional)
  • Audience The business each morning, and the data team
  • Built with Power BI · DAX · Power Query
Status page: a headline on which data areas can be used, every data area with its status and what happened last night, the last 14 nights, and open issues
The load of 29 June: seven of eight data areas usable, supplier invoices incomplete, and a plain-English line for each area.

Synthetic data · fictional client · full model, DAX and data generator on GitHub.

01

The brief

Finance, trading and supply chain open their dashboards first thing in the morning. When a nightly load fails, nobody knows until a figure looks wrong in a meeting. Thornfield needed one page that says which data can be used today and which reports to hold back, and behind it the detail the data team needs to find and fix the cause.

02

What it showed

On the morning of 29 June:

  • Supplier invoices were not readyOne of three files never arrived, leaving 1,204 invoices worth £214,608 missing. The page tells finance to hold accounts payable and supplier spend reporting until the file is resent.
  • Online orders could be used with careThree orders worth £412 were missing for the third night running, inside tolerance and traced to refunds posted after the extract closes. Fine for trends, worth checking before quoting exact totals.
  • Supplier invoices are the recurring problemThey had a problem on 5 of the last 14 nights and account for 5 of the 14 open issues, mostly late or incomplete files. The fix sits with the supplier's upload window rather than inside the warehouse.
  • The team is keeping up, for nowIssues take 2.7 days to resolve against a 3-day target, but 14 are open, up from 2 a month earlier.
Reconciliation page: rows and value at the source and in the warehouse for every data area, rows matched over 30 nights and arrival times against the deadline
Source against warehouse for every data area, rows matched over 30 nights, and how far each load landed from the 05:00 deadline.
Issue log page: open issues, the oldest issue, days to resolve, the open issue register, open issues by night, and open issues by owner and age
The issue log as it stood that morning: who owns each open issue, how long it has been open, and the queue over the last 30 nights.
03

How it's built

The model stores measurements about the data rather than the data itself: rows and value at the source and in the warehouse, the files received and when, and the records failing each quality rule. No status is stored anywhere. Every status is worked out from the thresholds in one rulebook table, so changing a tolerance changes the whole report consistently.

Only the checks on the load itself decide whether an area can be used. A quality rule that warns afterwards, such as invalid emails in the loyalty data, shows as a note without holding a report back. Any night can be selected, and the issue log then shows what was open that morning. The monitoring data had faults of its own, from a rerun written twice to arrival times recorded three ways. Each is handled in the model.

04

The source

The semantic model, the DAX, the report and the script that generated the data are on GitHub, all readable as plain text.

All data in this project is synthetic. Thornfield Retail Group is a fictional client created to demonstrate the work, and no real client data appears anywhere in it.

Next project Site Inspection Performance

Get in touch

Can your business trust this morning's numbers?

If people find out about a failed load from a wrong figure in a meeting, I'd like to hear about it.

Discuss a project