Data Engineer · Step 3 of 8 · 9 min
Pipelines: ETL, ELT, batch and streaming
Explain how data moves, choose between ETL and ELT, and know when streaming is worth it.
What a pipeline is
A pipeline is a series of steps that takes data from a source, changes it, and puts it somewhere useful. Sources are app databases, files, APIs and event logs. Destinations are usually a warehouse or a lake.
Good pipelines are repeatable. If you run the same day twice, you get the same result, not double the rows. This property is called idempotency, and it is one of the most useful words in the job.
ETL and ELT
ETL means extract, transform, load: you clean data before it reaches the warehouse. ELT means extract, load, transform: you land raw data first, then transform it inside the warehouse with SQL.
ELT became the default for analytics because cloud warehouses are fast and storage is cheap. Keeping the raw data means you can fix a transformation later and rebuild. Tools like dbt are built around this approach. ETL still makes sense when data must be filtered or masked before it is stored, for example personal data.
Batch and streaming
Batch pipelines process data in chunks on a schedule: every hour, every night. They are simpler, cheaper and easier to rerun. Most company reporting is batch, and that is fine.
Streaming pipelines process events as they arrive, within seconds. You need them for fraud checks, live tracking or alerts. Common tools are Apache Kafka for moving events and Apache Flink or Spark Structured Streaming for processing. Streaming adds real complexity, such as late and out-of-order events.
Ask what fresh enough means
Before you build anything real-time, ask the people who will use it how fresh the data must be. A dashboard read once each morning does not need streaming. Many teams start with batch and add streaming only for the one use case that needs it.
Try it
Design a pipeline on paper
- 1.Pick a source you know, such as a public API for weather or exchange rates.
- 2.Write three lines: where the data comes from, where it should land, and how fresh it must be.
- 3.Ask a chatbot the prompt below and challenge any step that is not idempotent.
I want a daily pipeline that pulls [data] from [source] and lands it in a warehouse for analysts. Propose an ELT design: extract, load raw, transform. For each step, explain how to make it safe to rerun for the same day without creating duplicates.