PharmaData quality gate and analytics platform

Data quality portal and analytics platform

A pharma distributor sells across Europe, and each country delivers sales, purchase and stock data to one central warehouse. Missing days, repeated files and invalid values used to reach management dashboards as if they were fact. A data quality portal now checks every delivery where it lands, turns a failed check into a ticket owned by the country that sent it, and the dashboards read only data that passed.

~60%Reduction in data quality incidents
26Markets delivering into one landing zone
4 checksTemporal, duplicates, validity, holiday, on every delivery
9 pagesPower BI report pages, slicers filter every visual
Executive overview page of the analytics platform: revenue trend, sales channel, sales by country, top products, gross margin by category and top partner companies
Real screen from the analytics platform. Client anonymised, figures blurred.
Client
A pharma distribution business operating across Europe
My role
Designed the data quality gateway and the validation model, and led the data engineering and the Fabric platform build.
Team
Data engineering, with market data owners responsible for fixes at source.
Timeline
Rolled out market by market across 26.
Stack
Azure Data Lake Storage, SQL database, Microsoft Fabric (data engineering, semantic models), Power BI, data quality portal

The problem

Each country delivers sales, purchase and stock data on its own schedule, in its own shape. When a country skipped a day the totals drifted without warning. When a file was late or repeated, reports refreshed on incomplete or duplicated records. Invalid values reached the reader as if they were fact.

In a regulated business a reporting error is exposure, and its cost scales with how far it travels before someone catches it. Management needed to know what to trust before acting on a number.

Scrolls sideways.

Before and after workflow: errors found by a reader weeks late, versus caught at the landing zone the same day
How a bad delivery was found before, and where it is caught now. Open full size

The solution

A dashboard cannot tell you what it did not receive. So the check has to happen where the data lands, before anything downstream refreshes. Every delivery goes into one landing zone, Azure Data Lake Storage and a SQL database, and the data quality portal runs four checks on it there: temporal, duplicates, validity and holiday.

A failed check raises an alert with a severity, and the alert becomes a ticket owned by the country that sent the data. Everything after the landing zone runs in Microsoft Fabric: data engineering pipelines, one semantic model with one definition per metric, and Power BI for management.

Scrolls sideways.

Architecture: external countries deliver into an Azure Data Lake Storage and SQL landing zone, the data quality portal checks each delivery for temporal gaps, duplicates, validity and holidays and raises tickets, and Microsoft Fabric runs data engineering, semantic models and Power BI on the data that passed
Quality is checked before insight is reported. The portal sits at the landing zone, not inside a report. Open full size

How it works

Landing zone

Azure Data Lake Storage and a SQL database. Every country delivery lands here first, unchanged, so there is always a record of exactly what arrived and when.

Temporal check

Did every expected day arrive? A skipped delivery is the most common failure and the hardest to see in a total, because the total still looks like a number.

Duplicate check

Was a delivery repeated? A resent file doubles a day. The check catches it before the pipeline does the arithmetic.

Validity check

Are the values within range and of the right type? Out-of-range figures are held rather than loaded.

Holiday check

Is a gap a real gap, or a public holiday in that country? Without this the portal would raise a false alert every bank holiday in 26 markets.

Alerts and tickets

A failed check produces an alert with a severity, and the alert becomes a ticket owned by the country that sent the data. The fix happens at the source, so the same error stops recurring.

Quality score and ranking

A score per country and per domain (sales, purchase, stock), freshness against the SLA, a six-month trend, and a leaderboard of which countries deliver the cleanest data.

Fabric and Power BI

Data engineering pipelines, one semantic model with one definition per metric, and a nine-page report: executive overview, partners, deliveries, inventory, Europe map. Slicers filter every visual.

Stack

Landing zone

Azure Data Lake StorageSQL database

Platform

Microsoft FabricData engineering pipelinesSemantic models

Reporting

Power BINine report pagesSlicers on every visual

Data quality

Data quality portalTemporal, duplicate, validity, holiday checksAlerts to ticketsCountry leaderboard

Product screens

Data quality portal: overall score, freshness against SLA, countries with issues, and the six-month trend by domain

1 of 8

Real screens from both products. Client anonymised, figures blurred at source.

Results

Before

Found downstream

Errors surfaced in management reports and regulatory submissions, and each one meant a manual trace back through the pipeline to find where it entered.

After

~60% fewer incidents

Caught at the landing zone, ticketed to the owning market with the reason attached, and fixed at source. Management reads only data that passed the gate.

What the team can answer now

The team can now answer questions it could not before. Which countries have missing data. Which alerts are critical and still open. Which countries deliver the best data quality. Which partners drive revenue and margin. Whether deliveries are on time by country and partner. Which batches are close to expiry.

What this demonstrates

  1. 01Data quality as a gate at the landing zone, not a report after the fact
  2. 02A validation model (temporal, duplicate, validity, holiday) that holds across 26 sources with different schedules and shapes
  3. 03Ownership pushed back to the source: a failed check is a ticket for the country that sent the data
  4. 04One semantic model with one definition per metric, serving a nine-page Power BI platform on Microsoft Fabric
  5. 05A rollout market by market, so each country's data owners were onboarded rather than surprised

Next caseFormulation and offer assistant