Prepstellar

Data Engineering Fundamentals · Data Engineering Foundations

21 cards

ETL, ELT, and Incremental Loading

Swipe, scroll or use ← →
  1. Same three steps, different order

    ETL and ELT share extraction, transformation, and loading; their defining difference is order and location. Both are sequences that prepare data for analysis, so the argument between them is never about which one skips a step.

    Extraction is the first move in either case: collecting raw data from databases, files, applications, sensors, or application events, structured or not. Transformation is the work of turning that raw shape into the shape a consumer needs — converting types and formats, dropping inconsistent or inaccurate records, removing duplicates. Loading is the write into the target where analysis will happen.

    What changes is where transformation sits relative to that write.

    ETL transforms extracted data on a secondary processing system before loading it into the analytical target.

    ELT loads extracted data in its natural state and transforms it inside the target warehouse or lake as needed.

    1 / 21
  2. Same three steps, different order

    The consequence is what each approach leaves you holding.

    ETL delivers target-ready data at load time, whereas ELT retains raw inputs for later transformations. In ETL, whatever arrives in the target has already passed through the rules; in ELT, the raw material is still there, and you can transform it again as often as a new question requires.

    ETL ELT
    Order Extract → transform → load Extract → load → transform
    Transformation runs On a secondary processing system Inside the target warehouse or lake
    What sits in the target Data already prepared for its purpose Raw inputs, plus whatever you derive from them
    Re-deriving something new Usually means re-extracting or reworking upstream Query the retained raw data again

    Both patterns extract from sources and prepare data for analysis; neither name describes extraction alone, because the distinction concerns transformation relative to loading, and either pattern can use full or incremental loads.

    2 / 21
  3. Quick check

    A pipeline extracts orders, cleans and reshapes them on a separate processing tier, and only then writes them into the warehouse. Which pattern is this, and why?

    1. AELT, because the data reached a warehouse and warehouses always transform on arrival

      The target being a warehouse says nothing about where the work ran; ELT means transforming after the load, inside the target.

    2. BETL, because the transformation happens outside the target and before the load is written

      Right. ETL transforms on a secondary processing system and loads data that is already target-ready.

    3. CNeither, because a pattern that transforms before loading is not doing extraction

      Both patterns extract; the names describe where transformation sits relative to loading, not whether extraction happened.

    3 / 21

  4. What transforming first buys you

    Doing the work before the load is not merely the older habit. It buys two things that are difficult to obtain any other way.

    ETL suits predetermined structured targets and can filter or mask sensitive data before it reaches the target. When the target schema is fixed and known in advance, pre-load transformation is what guarantees every row fits it. And because the rules run before the write, they can enforce a boundary: values that must never be stored in the target simply never travel there.

    That second point is a control, not a preference. Masking a personal identifier after loading means the raw identifier was in the target, however briefly, and appeared in whatever the target keeps of it. Masking before loading means it never crossed the line at all.

    4 / 21
  5. Quick check

    A rule states that unmasked personal identifiers must never be stored in the analytical target. Which approach actually enforces it?

    1. ALoad the identifiers first, then mask them with a job that runs in the target

      Masking after the load means the raw identifiers were written into the target, which is the thing the rule forbids.

    2. BLet analysts repeatedly re-derive their own views from the retained raw fields

      Repeated re-derivation from retained raw values is the opposite of the rule: it depends on the raw values being there.

    3. CMask them during pre-load transformation, so the raw values never arrive

      Right. Transforming before the load enforces a boundary that raw sensitive values may not cross.

    5 / 21

  6. What loading first buys you

    The modern default runs the other way, for reasons that are just as concrete.

    ELT uses the target platform's processing power and can retain structured, semi-structured, and unstructured inputs. A cloud warehouse or lake can scale its own compute and transform in parallel, so the transformation step stops being a separate bottleneck that has to grow with the data. Inputs that would not fit a fixed tabular schema — documents, events, varied formats — can land first and be interpreted later.

    ELT can simplify the stack by performing transformations in the target instead of maintaining a separate transformation server. One fewer system to size, patch, monitor, and pay for. The target also brings its own access controls to the raw data it now holds, so governance is configured where the data lives rather than rebuilt in a middle tier.

    Nothing is removed from the pipeline by this choice: extraction and loading still happen, the target still holds untransformed data by design, and that raw data still has to be governed.

    6 / 21
  7. Quick check

    Why can loading before transforming reduce the number of systems a team maintains?

    1. ATransformation runs inside the target instead of on a separate processing server

      Right. Consolidating transformation with the target's own compute removes a system from the stack.

    2. BExtraction and loading are no longer needed once the target holds the raw data

      Both patterns extract and load; only the position of transformation changes between them.

    3. CGovernance stops being a concern, because raw data in a target is never exposed

      Retained raw data still needs access controls — the target supplies them, it does not remove the need.

    7 / 21

  8. Keep your progress in the app

    That’s 3 of 9 quick checks. In the app they stay answered, and every lesson remembers where you left off.

  9. Choosing under real constraints

    The decision should follow constraints rather than fashion. Two claims settle most arguments:

    Legacy formats, edge filtering, or a rule that raw sensitive fields must never enter the target can favor ETL.

    Flexible exploration at scale and repeated transformations over retained raw data can favor ELT.

    Constraint in the room Leans toward
    Fixed, predetermined target schema ETL
    Raw sensitive fields must not enter the target ETL
    Legacy or third-party formats with settled structure ETL
    Filtering or averaging at the edge before sending on ETL
    Varied and semi-structured inputs whose use is not yet known ELT
    A target that can scale transformation compute ELT
    Analysts deriving new models repeatedly from the same raw data ELT

    The two also coexist. A complex analytics estate can prepare some sources ahead of the load and land others raw, choosing per source rather than per organization.

    8 / 21
  10. Choosing under real constraints

    Work a case through. A regulated target must never receive unmasked personal identifiers, its schema is fixed, a separate processing tier already exists, and analysts do not need the raw values.

    Every constraint points the same way. The security rule requires the masking to happen before the write. The fixed schema means the shape of the load is known in advance, which is exactly the situation pre-load rules handle well. The processing tier is already built and staffed, so its cost is not an argument against using it. And the one thing that would pull toward retaining raw data — analysts wanting to re-derive from it — has been explicitly ruled out.

    So: transform and mask before loading the fixed target. Loading the identifiers first and masking them later breaks the rule at the moment of the write. Retaining every raw identifier for exploration keeps precisely the values that must not be kept.

    9 / 21
  11. Quick check

    The target must never receive unmasked identifiers, its schema is fixed, a processing tier already exists, and analysts do not need raw values. Which pattern fits?

    1. ALoad raw identifiers into the target first, then mask them there later

      The write itself would place unmasked identifiers in the target, which is what the rule forbids.

    2. BTransform and mask on the existing tier, then load the fixed-schema target

      Right. The security boundary and the predetermined structure both favour preparing the data before it is loaded.

    3. CRetain every raw identifier in the target for repeated exploration by analysts

      Retention is what the rule rules out, and the scenario states that analysts do not need the raw values.

    10 / 21

  12. When the constraints point the other way

    Change the facts and the answer flips cleanly. A cloud warehouse can scale its compute, incoming data arrives in varied formats, analysts must derive new models repeatedly without re-extracting the sources, and raw access is already governed inside the target.

    Load the raw inputs and transform them in the target as needed. Scalable target compute makes transformation there cheap; varied formats are easier to land than to force into a fixed shape up front; repeated modeling needs the raw data to still be present; and the governance objection has been answered by the target's own controls.

    The alternatives each fight a stated fact. Transforming every use case on a fixed external server means a new question demands new upstream work. Discarding the raw inputs after one model removes the material the next model needs. Re-extracting from the sources for every analytical question is the cost that retaining the raw data exists to avoid.

    11 / 21
  13. Quick check

    Compute in the warehouse scales, formats vary, raw access is governed there, and analysts keep deriving new models without re-extracting. What is strongest?

    1. ALoad the raw inputs and then transform them inside the target whenever it is needed

      Right. Scalable target compute, varied inputs, governed raw retention, and repeated modeling all point to transforming in the target.

    2. BTransform each use case on a fixed external server before any data is loaded

      A fixed external tier makes every new question into upstream work, which the repeated-modeling requirement rules out.

    3. CKeep one predetermined model and discard the raw inputs once it is produced

      Discarding the raw inputs removes exactly the material the next derived model would need.

    12 / 21

  14. Loading scope is a separate decision

    Here is the distinction most often collapsed by mistake. Loading scope is a separate decision from ETL versus ELT: how much data a run moves has nothing to do with where the transformation happens. Either pattern can use full or incremental loads.

    A full refresh replaces the target from a complete source extract rather than relying on prior load state. Every run reads everything and rebuilds the target. It is simple and self-correcting — no saved progress can drift, because none is kept — and it costs a full pass every time.

    An append-only load adds new source records without revising previously loaded target rows. It fits data that is genuinely additive, such as a log of events that happened. It is the wrong choice when earlier records get corrected or deleted, because those revisions never reach the rows already written.

    Scope What each run does The catch
    Full refresh Extracts everything and replaces the target Repeats all the work on every run
    Append-only Adds new records, leaves existing rows alone Corrections to old rows never land
    13 / 21
  15. Quick check

    A load adds each run's new records but never revises rows already written. What is it, and when does it break?

    1. AA full refresh; it breaks when the source is too large to extract in one pass

      A full refresh rebuilds the target from a complete extract rather than leaving existing rows untouched.

    2. BA change-based load; it breaks when no reliable saved progress can be kept

      A change-based load exists precisely to carry modifications through, which is what this one does not do.

    3. CAn append-only load; it breaks when earlier records are corrected or deleted

      Right. Append-only growth suits additive data and misses any later correction or deletion of earlier records.

    14 / 21

  16. Loading only what changed

    A change-based incremental load applies records that are new or modified since the last successful load. Unlike append-only, it carries revisions; unlike a full refresh, it does not re-read everything to find them.

    That "since" has to be stored somewhere. A watermark records the last processed value so the next incremental run can select a later range. The watermark column is usually a value that rises as rows are added or updated — a last-modified timestamp, or an increasing identifier — and its highest processed value is what gets saved.

    A run then follows the same shape every time:

    1. Read the saved watermark: where the previous run stopped.
    2. Read the current highest value in the source watermark column: where this run will stop.
    3. Copy the rows that fall between those two boundaries.
    4. Save the new watermark, so the next run starts where this one ended.

    Change data capture can limit processing to data that changed since the prior run, reading the source's own record of changes instead of comparing values.

    15 / 21
  17. Loading only what changed

    The saving is real and so is the obligation. Incremental loading reduces repeated work but requires reliable progress state and correct handling of updates.

    Two things can go wrong, and both are consequences of relying on saved state. If the watermark is lost, corrupted, or written before the copy actually succeeded, the next run selects the wrong range and rows are silently skipped — which is why the watermark is saved after the copy, not before it. And if the pattern only inserts, a row that was modified after it was first loaded arrives as a second copy or not at all, depending on the target's keys.

    A full refresh has neither problem, because it keeps no state and rebuilds from scratch. That is the trade being made: repeated work in exchange for not having to be right about progress.

    16 / 21
  18. Quick check

    A run reads a saved value, copies only the source rows above it, and then stores the new highest value. What is that saved value doing?

    1. AForcing every run to rebuild the target from a complete extract of the source

      Rebuilding from a complete extract is a full refresh, which relies on no saved progress at all.

    2. BMarking records as permanently new so that each run reprocesses all of them

      If records stayed permanently new, the boundary would save nothing — every run would repeat the same work.

    3. CRecording where the last run stopped, so this run can select a later range

      Right. The watermark stores the last processed value so the next run can request only what came after it.

    17 / 21

  19. Designing one from the numbers

    Constraints usually decide this outright. Take a source of 500 million rows in which roughly 0.2 percent change on any given day, where updates to old keys genuinely matter, and where the pipeline can store a reliable last-modified watermark.

    Three of those facts each eliminate an option:

    • 0.2 percent change daily. A full refresh would extract 500 million rows to carry about a million meaningful ones. It works, but it repeats nearly all of its work every day.
    • Updates to old keys matter. Append-only is out. Loading only newly created keys leaves every corrected record stale in the target.
    • A reliable watermark exists. The one requirement of change-based loading is satisfied, so its saving is available without gambling on unreliable progress state.

    Select and apply the rows beyond the saved change watermark, treating new and modified records alike. That reads about a million rows instead of 500 million, and still carries the revisions that append-only would have dropped.

    18 / 21
  20. Quick check

    Of 500 million source rows, about 0.2 percent change daily, updates to old keys matter, and a reliable last-modified watermark can be stored. Which design fits?

    1. ASelect and apply the new and modified rows that lie beyond the saved watermark

      Right. The reliable boundary makes change-based loading available, and it carries modifications as well as insertions.

    2. BReplace the whole target every day from a complete extract of all the source rows

      A daily full rebuild reads 500 million rows to deliver about a million changed ones, repeating nearly all of its work.

    3. CAppend each new key and leave previously loaded rows exactly as they are

      Appending only new keys leaves every corrected old record stale, which the update requirement rules out.

    19 / 21

  21. Key takeaways

    • ETL transforms extracted data on a secondary processing system before loading it into the analytical target. ELT loads extracted data in its natural state and transforms it inside the target warehouse or lake as needed.
    • ETL suits predetermined structured targets and can filter or mask sensitive data before it reaches the target; ELT uses the target's processing power, keeps structured, semi-structured, and unstructured inputs, and can simplify the stack by dropping a separate transformation server.
    • Let constraints choose: legacy formats, edge filtering, and a hard rule against raw sensitive fields in the target favour ETL; flexible exploration at scale and repeated transformation over retained raw data favour ELT.
    • Loading scope is its own decision. A full refresh replaces the target from a complete source extract rather than relying on prior load state. An append-only load adds new source records without revising previously loaded target rows. A change-based incremental load applies records that are new or modified since the last successful load.
    • Incremental loading reduces repeated work but requires reliable progress state and correct handling of updates.
    20 / 21
  22. Quick check

    Which statement keeps the two decisions separate?

    1. AChoosing ELT settles the loading scope too, because target-side work is always full

      Transforming in the target says nothing about scope: an ELT pipeline can load incrementally.

    2. BWhere transformation runs and how much each run loads are independent choices

      Right. Either pattern can use full or incremental loads, because scope and transformation location are separate.

    3. CA full refresh is only available to ETL, since incremental runs need a raw target

      Both patterns can refresh fully or incrementally; neither scope belongs to one of them.

    21 / 21

  23. 9 quick checks · then the test

    In the app, finishing the quick checks opens this lesson’s 10-question test, and the ones you miss come back exactly when you’re about to forget them.

The whole course, on your phone

Lessons you can read, audio you can listen to on the way to work, and practice that remembers what you got wrong.