Contents

Data Engineering › Transformation & Analytics SQL

ETL vs ELT

Transforming before loading vs loading raw data and transforming in the warehouse.

Also known as: ETL vs ELT, ELT vs ETL, extract load transform, transform before load

Both move data from sources to an analytical store. The difference is where and when the transformation happens.

ETL:  source ──► extract ──► TRANSFORM (separate server/tool) ──► load ──► warehouse
ELT:  source ──► extract ──► load (raw) ──► warehouse ──► TRANSFORM (inside, with SQL)
ETLELT
Transforms inA processing engine outside the warehouseThe warehouse (or lakehouse) itself
Raw data in the warehouseUsually notYes, in a raw layer (landing zone)
ReprocessingRe-extract from the source (if still available)Re-run SQL on stored raw data
Typical languagePython, Java, GUI toolsSQL (SQL transformation models)
EraTraditional, when warehouse compute and storage were expensiveCloud warehouses with cheap storage and elastic compute

Why ELT became the default

  • Storage is cheap, so keeping raw data is affordable, and raw data gives you the ability to fix mistakes by reprocessing.
  • Warehouse compute is powerful and scalable, so the transformation can run where the data is, rather than moving it out to another system.
  • SQL is a shared language that analysts and engineers both read, so more people can maintain transformations.
  • Simpler ingestion: load first, decide later. Connectors just copy.

When ETL is still the right choice

  • Sensitive data must be masked, tokenized or dropped before it lands in a shared store (privacy and compliance).
  • Heavy, non-SQL processing: parsing images or text, complex custom logic, machine learning feature work.
  • Reducing volume early: filtering or aggregating huge streams before paying to store everything.
  • Legacy systems or constraints where the target can’t transform.
  • Transformations that need to run before data is usable at all (decoding binary formats).

In practice

Most teams use a hybrid: light, necessary processing at ingestion (decrypt, parse, remove prohibited fields), raw landing, then modeling in SQL in layers (staging, intermediate, marts).

The deciding questions: Where is the sensitive data handled? How much will you need to reprocess? Who maintains the logic, and in which language? More on the pipeline side in ETL and on shaping data in data transformation.