ETL vs ELT: what's the difference?

ETL (Extract, Transform, Load) transforms data **before** loading it into the destination; ELT (Extract, Load, Transform) loads raw data first and transforms it **inside** the destination warehouse. ELT has become the default for cloud data warehouses (Snowflake, BigQuery, Databricks) because their compute is cheap and elastic, while ETL still suits heavy pre-processing or strict compliance before storage.

ETL: transform first

Data is cleaned and reshaped in a processing engine (e.g. Spark) before it lands in the warehouse. Good when you must not store raw/PII data, or transformations are compute-heavy and reused.

ELT: load raw, transform in-warehouse

Raw data lands first (often in a bronze/silver/gold medallion layout), then SQL or dbt transforms it inside the warehouse. Faster to iterate and keeps a raw copy for reprocessing.

Example (SQL)

-- ELT: raw data already loaded into bronze, transform in the warehouse
CREATE TABLE gold_daily_sales AS
SELECT
  sale_date,
  SUM(amount) AS total_sales,
  COUNT(DISTINCT customer_id) AS active_customers
FROM bronze_sales
GROUP BY sale_date;

In ELT the raw bronze_sales table is loaded first, then transformed into an aggregated gold table with SQL.

Run this example in the free online PySpark compiler

Frequently asked questions

What is the main difference between ETL and ELT?

In ETL you transform data before loading it into the destination; in ELT you load raw data first and transform it inside the destination warehouse.

When should I use ELT instead of ETL?

Use ELT with modern cloud warehouses (Snowflake, BigQuery, Databricks) where compute is cheap and elastic, and you want to keep a raw copy for reprocessing and fast iteration.

Is ELT better than ETL?

Neither is universally better. ELT is the common default for cloud analytics; ETL still fits heavy pre-processing, streaming, or when raw/PII data must be transformed before storage.

Practice challenges

Open the free PySpark compiler · Data Engineering challenges · Data Engineering jobs