ETL vs ELT
Properties
tags
cscs/data_eng
created
14.03.2026, 00:00
modified
26.07.2026, 13:27
published
Empty
topics
ETL, ELT, Data Transformation
authors
Empty
ai-assisted
Yes
- Two dominant patterns for moving data from source systems into an analytical destination.
# ETL — Extract, Transform, Load
Data is transformed before it reaches the destination.
- Extract — pull raw data from sources (DBs, APIs, files)
- Transform — clean, join, aggregate in an intermediate engine (e.g. Spark job, custom script)
- Load — write the clean, structured result to the warehouse/data lake
- Originated when storage was expensive and warehouses were rigid
- Transformation logic lives outside the warehouse
- Tools: Apache Spark, Talend, Informatica, custom Python scripts
# ELT — Extract, Load, Transform
Data is loaded raw first; transformation happens inside the warehouse.
- Extract — pull raw data from sources
- Load — dump raw data into the warehouse/lake (cheap columnar storage)
- Transform — use SQL (e.g. dbt) to model data directly in the warehouse
- Made practical by cheap cloud storage and powerful MPP warehouses (Snowflake, BigQuery, Redshift, Databricks)
- Transformation logic lives inside the warehouse as SQL models
- Enables reproducibility, version control, and easy re-runs
# Comparison
| Dimension | ETL | ELT |
|---|---|---|
| Transform location | External engine | Inside the warehouse |
| Raw data preserved? | Often not | Yes (always in source layer) |
| Scalability | Depends on transform engine | Inherits warehouse scale |
| Tooling | Spark, custom scripts | dbt, Dataform |
| Latency | Higher (transform before load) | Lower initial load |
| Re-processing | Harder | Easy (re-run SQL) |
# When to Use Which
- ETL — when raw data must not touch the warehouse (compliance), when transformation is computationally heavy (ML feature engineering), or when the destination is not SQL-capable
- ELT — most modern cloud analytics workloads; preferred pattern with dbt and cloud warehouses