Data warehousing without a designer

A data warehouse in C#

Star schema, slowly changing dimensions, incremental facts — as code you can test. Not a second BI canvas.

A warehouse is dimensions around facts, history you can explain, and loads that run again without doubling the grain. SSIS and ADF will draw that on a canvas. ETLBox writes it in C#: CreateTableTask for the schema, lookups for the surrogate keys, DbMerge for Type 1, new rows for Type 2, incremental facts from the last loaded date.

Same warehouse. Different medium.

The star schema does not care about the tool. The expensive part is changing a dimension six months later when the only artifact is a package nobody wants to reopen. In ETLBox the load is a network you can unit-test and put in CI.

ETLBox

The load is C#

  • Star schema as tables you create in code
  • SCD Type 1 (overwrite) and Type 2 (history)
  • Incremental facts from the last load date
  • Date dimension, surrogate keys, lookups
  • Tests and CI like the rest of the repo
Designer DWH

The load is a package

  • SCD wizard, then a Script Component
  • Incremental logic buried in expressions
  • A .dtsx or ADF canvas as the source of truth
  • Hard to test before the nightly run
  • Changing a grain means rearranging boxes

What the walkthrough actually builds

Not a methodology slide. A SQL Server star schema — customers, dates, orders — loaded from OLTP with ETLBox. The full C# is in the article and on GitHub.

Star schema

Fact table in the middle, dimensions around it. Surrogate IDs via IDENTITY (or SERIAL / AUTO_INCREMENT on other databases).

SCD Type 1 and Type 2

Overwrite when history does not matter. Insert a new version with valid-from / valid-to when it does.

Date dimension

A consistent time grain for every fact — days, weeks, fiscal periods — not a GETDATE() in the query.

Incremental facts

Read the last loaded date, pull what changed, land it. A full reload is a last resort.

The complete load — including error handling — is Building a Data Warehouse with ETLBox. Demo repo: StarSchema in etlbox.demo.

Used in production

Commonwealth Bank of Australia, Deloitte, Health Catalyst, SEW Eurodrive, Calpine, FASTEC. Warehouses that have to survive the next dimension change, not the next designer.

Build the star in C#

Dimensions, facts, tests.

A trial key unlocks the full library. NuGet without a key is limited to 5,000 rows per data flow. Coming off SSIS for the warehouse? That path is documented too.

Get a free trial key Read the walkthrough A C# replacement for SSIS

Commonwealth Bank of Australia
Australia

Brunata
Denmark

Deloitte
Ireland, India

IWG
Switzerland

National Bank of Serbia
Serbia

Flowwright
USA

FASTEC
Germany

Calpine Energy Solutions
USA

Digitain
Armenia

Health Catalyst
USA

Regal Rexnord
USA, Mexiko

Normandin Beaudry
Canada

Djøf
Denmark

ATD Solutions Ltd.
U.K.