Comparisons
Pairs that get conflated in real conversations. Neither column wins — what decides is the requirement, and each record leads with the confusion, because the confusion is the reason the record exists at all.
OLTP vs OLAPBatch vs StreamingETL vs ELTParquet vs AvroLake vs Warehouse vs LakehouseCDC vs PollingEvent modelling vs Snapshot modellingFull refresh vs IncrementalLambda vs KappaOrder grain vs Order-line grain
ETL vs ELT
What people get wrong about this pair
ELT is presented as the modern answer. The real question is where compute lives and who keeps the raw copy — and the second half of that is usually the deciding one.
ETL
Use it when
Compute at the destination is scarce or expensive, the raw data must be filtered before it crosses a boundary, or the destination cannot read the source format.
ELT
Use it when
The destination has ample compute, and you want the raw copy retained so a transformation bug is a re-run rather than a re-extract.
| Dimension | ETL | ELT |
|---|---|---|
| Where transformation runs | In transit, before load | In the destination, after load |
| Raw retained | Often not — you loaded the result | Yes, by construction |
| Recovering from a logic bug | Re-extract from the source, if it still has the data | Re-run the transformation over retained raw |
| Privacy boundary | Can filter before data leaves | Everything lands first, including what you must not keep |
| Destination cost | Storage and compute for the result only | Storage for raw plus compute for every transformation |