ETL vs ELT
A schema shift driven by cheap, fast warehouses
ETL transforms data before it lands in the warehouse; ELT loads raw data first and transforms it in place. Warehouses got fast and cheap enough to make ELT the modern default.
What you will learn
- Compare ETL and ELT architecture and failure modes
- Explain why ELT became the default in modern data stacks
- Identify when classic ETL still wins
What is this?
ETL (Extract, Transform, Load) transforms data before it reaches the target store, so the warehouse only ever holds cleaned data. ELT (Extract, Load, Transform) loads raw data first, then transforms it in place with the warehouse's own compute — typically SQL. ELT became dominant because modern columnar warehouses are cheap enough to store raw and powerful enough to transform at scale.
Why do you need it?
- Loading raw preserves the source truth, so you can re-transform (backfill) without re-extracting.
- Warehouse compute lets SQL do transforms without a separate, expensive transform server.
- Transforms become code with tests and version control (dbt, SQLMesh).
- ETL still matters where you must scrub data before it can legally or functionally land (PII filtering, file format conversion).
Mental model
Washing groceries at the store vs in your kitchen
ETL vs ELT
ETL cleans before it comes in the house because you can't keep raw produce. ELT brings everything in and washes it in the kitchen (the warehouse), where you have all the water and space you need.
How it works
- ETL: an extractor pulls data, a transform engine (often a dedicated job/host) scrubs and reshapes it, and a loader writes the final shape into the warehouse.
- ELT: an extractor copies raw data verbatim into staging tables or object storage; a modeling layer (SQL, dbt) transforms it in place.
- ELT separates concerns: extract/load is one team's 'get the data in', modeling is another's 'shape the data'.
- Reverse ETL pushes modeled warehouse data back into operational tools (CRM, ad platforms).
- Failure handling differs: ETL failures stop mid-transform (the warehouse is unchanged), ELT failures leave raw data loaded and only staging/modeled tables stale.
ETL vs ELT pipelines.
In production
- A SaaS loads daily exports raw into staging (ELT) and models revenue with dbt — backfills are a one-line 'run this model for that window'.
- A payments startup still uses ETL to mask PANs before anything lands in the warehouse, because raw cards must never exist at rest.
- Reverse ETL syncs the 'account health score' model back into Salesforce every hour.
Best practices
- Prefer ELT unless you must remove data (PII, secrets) or massively reshape before storage.
- Keep a raw staging layer immutable; never let transforms clobber the source copy.
- Version your transforms like code; the modeled layer should be reproducible from raw.
- Choose the transformation step's compute explicitly — warehouse (ELT) or dedicated engine — and know the cost per run.
Common mistakes
- Building an ETL server to do work the warehouse could do for a fraction of the ops burden.
- Modeling in air with unportable SQL that wasn't tested, then 'fixing' in the BI tool.
- Forgetting reverse ETL is a pipeline too — it needs monitoring and idempotency.
Common issues
Modeled table is stale but load succeededTransform step (dbt run) failed or wasn't scheduled
Make modeling part of the same DAG and alert on model-level freshness.
ETL job consumes all memory during transformTransform is CPU/RAM-bound in a separate engine; volume outgrew the box
Move to ELT and push the transform into warehouse compute, or partition the transform.
Backfill takes hours because raw is re-fetchedELT skipped the raw store, transforms read from source again
Load raw once, then always transform from staging/raw tables.
Debugging tips
- In ELT, first confirm the raw/load step ran; modeling can't fix a missing load.
- Diff raw vs modeled counts to see exactly where rows drop.
- For ETL, check the transform engine logs and the exact field the transform choked on.
- Re-run a single model rather than the whole pipeline when only one table is wrong.
Interview checkpoint
Hands-on lab
- Load raw data verbatim into staging
- Write SQL transforms that model raw into a clean shape
- Demonstrate that modeling can be re-run (backfill) from raw without re-extracting
Build an ELT Flow in SQL
30 min · beginner
Quick quiz
Which pattern stores the raw data in the warehouse?
ELT makes transformations more reproducible because raw data is retained in the platform.