Skip to content
Outcomes · Case study

Metadata-driveningestion.

A grocery estate ingested supplier and point-of-sale data through hand-written SSIS packages, one per feed, loaded overnight. We replaced the estate with one master pipeline that reads its instructions from a control table, curated the result in Synapse, and put a governed Power BI dataset in front of store managers.

01 / The situation

Before and after

Before

One package per feed

A large estate of hand-written SSIS packages, each supplier and each point-of-sale feed with its own. A new supplier meant a new package, a deployment and one more thing to maintain. Loads ran overnight, so the stock reports store managers relied on described yesterday.

After

One pipeline, driven by a table

One reusable master pipeline in Azure Data Factory, told what to load by a control table. A new source is a row in that table, reviewed like any other change. Data lands append-only, is curated in Synapse, and is read by store managers through one governed Power BI dataset.

02 / Architecture

The platform

A control table drives every source.

Azure SQL configuration directs one ADF master pipeline. Source records move through Bronze landing, cleansed Silver tables and a Gold star schema before Power BI.

Data flowControlSelect a stage to inspect
Full architecture
Azure SQL configuration directs one ADF master pipeline. Source records move through Bronze landing, cleansed Silver tables and a Gold star schema before Power BI.
control

ADF master pipeline

02 / 07

One parameterised ADF pipeline reads the control table and loops through the configured sources. Copy activities land each feed in Bronze; the master pipeline coordinates validation, curation and per-source run logging.

  • Azure Data Factory
  • Copy activity
  • Source loops
Control in
Control table Azure SQL
Control out
Bronze · Raw landing / Run log + alerts

Dashed routes carry configuration, orchestration and run logs. Solid routes carry business records: ADF Copy lands Bronze, then Synapse produces the Silver tables and Gold star schema.

03 / The delivery

Inside the delivery

The control table

One row per source in Azure SQL: system, connection, schedule, schema, landing path, quality rules. The table is the specification of the estate, versioned and reviewed; nothing about a source lives only inside a pipeline.

  • Azure SQL
  • One row per source
  • Reviewed like code

The master pipeline

A single Azure Data Factory pipeline reads the control table and runs each source through the same steps: extract, land, validate, log. Parameterised activities and loops replace copies of the same logic; schema drift is handled in configuration, not in a hotfix.

  • Azure Data Factory
  • Parameterised
  • Schema drift in config

Bronze, silver, gold

Bronze retains every feed append-only in its original form. Synapse validates and conforms it into silver cleansed tables, then builds the gold star schema for the questions store teams actually ask: stock, sell-through, expiry. Each layer has a distinct responsibility before Power BI reads the reporting marts.

  • Bronze raw landing
  • Silver cleansed tables
  • Gold star schema

The store manager dataset

One governed Power BI dataset over the star schema, with the measures defined once. Store managers see current stock and near-expiry lines in the report they open every morning; head office sees the same numbers.

  • Power BI
  • One dataset
  • Same numbers everywhere

Operations

Every run is logged against the source that produced it, with alerts on failed validations. Onboarding, schedule changes and retirements are all changes to the control table, so the operations story is one table and one pipeline.

  • Run logs per source
  • Validation alerts
  • One thing to operate
04 / The outcome

What changed

A new source is configuration.

A row in the control table, reviewed and released, and the master pipeline loads it on its schedule. No new package, no new deployment.

One pipeline to run and version.

The estate of packages became one pipeline and one table. Monitoring, alerting and change control apply once.

Schedules set per source.

Loads are no longer one overnight batch; each source runs on the cadence its data needs, so store managers read current stock rather than yesterday’s.

One governed dataset.

Store teams and head office read the same Power BI dataset with the same measures; the spreadsheet copies that used to circulate went away.

The SSIS estate was retired source by source.

Each feed was moved onto the framework, reconciled against its package, and the package switched off. Nothing was retired on faith.

Technology
  • Azure Data Factory
  • Synapse Analytics
  • Power BI
  • Python
  • Azure SQL