Data & Analytics
ETL and ELT pipelines: run it twice, get the same answer
Load first, shape after
Either way, fields you shouldn't keep, like card numbers, are removed before anything is stored.
What makes a pipeline dependable
01
Safe to rerun
Same input, same result
Each step replaces its own output for the day it covers, keyed by record, so a retry never adds a second copy.
steps that append without a key.
02
Steps in order
Nothing runs on partial data
Each step waits for the steps it depends on. If one fails, everything after it waits too.
schedules that start steps by the clock instead of by what finished.
03
Backfills
Any past day, on request
When a rule changes, rebuild the days it affects from the raw copy.
rules that only apply to new data.
04
Every run recorded
What ran, how many rows, how long
Each run leaves a record per step, so “why is this number different?” starts with facts.
logs that say “success” and nothing else.
05
Someone told
The owner, with the failed step
A failed or late run reaches the person who can fix it, before the report goes out.
alerts sent to a shared inbox nobody reads.
Three nights
Run · Sep 30
- done
extract 3 sources
01:00–01:06
- done
load raw
2,914 rows
- done
staging
0 unmapped values
- done
model
jobs, revenue, customers
- done
publish
01:22
Twenty-two minutes, every step recorded. Reports built at 06:00 use it.
Run · Oct 1
- done
extract CRM, scheduling
01:00
- retried
extract accounting
timeout at 01:02; retried 01:32
- done
load raw
01:40, after the retry
- done
staging
- done
model
- done
publish
02:05
Nothing ran on half the data. The run finished late but whole, well before the 06:00 report.
Rerun · Sep 1–30
- done
rule change
status “Partial” now maps to “in progress”, not “completed”
- done
rebuild staging
30 days, from the raw copy
- done
rebuild model
- done
publish
September's completed jobs go from 41 to 40 everywhere at once. Nothing is doubled, and every other month is untouched.
What a pipeline hands off
In
Out
Worth building when the same data moves every day
Good fit
- Reports depend on data from more than one system, moved on a schedule.
- Someone fixes broken exports or reruns scripts by hand.
- Rules change and past numbers need rebuilding.
Not the right fit
- One system with built-in reports already answers the questions.
- Data moves once, for a migration. That's a one-off job, not a pipeline.
Questions about ETL and ELT pipelines
Do we need a big orchestration tool?
Usually not at first. A scheduler that respects dependencies and records each run is enough for a handful of sources; heavier tools come in when the number of sources and steps grows.
How often should it run?
As often as the decisions that use it. Most reporting is fine overnight; anything that drives the working day may need hourly runs or changes as they happen.
What happens when a source changes its format?
The load still lands the raw copy, a check flags the change, and the steps after it wait. Nothing quietly fills with blanks.
Can it run in real time?
Parts can. We use change-by-change loading where a decision needs minutes, and keep the rest on a schedule, because it's simpler to run and check.