Jasper Alblas
Jasper Alblas
Data Engineering • Analytics • Business Intelligence
You’re on Part 0.5 of 5 in Foundations → the hands-on build (QuakeFlow) starts at Part 1.1
| Part | Topic |
|---|---|
| Part 0.1 | How the Data World Works |
| Part 0.2 | Data Careers Explained (This article) |
| Part 0.3 | Is Data Engineering Right for You? |
| Part 0.4 | Understanding Data Storage |
| Part 0.5 | Understanding Data Pipelines (this article) |
| Part 1.1 | Setting up our QuakeFlow project |
| Part 1.2 | We start building our project |
In Part 0.4, you learned where data lives. But storage alone doesn’t make data useful — it has to actually get from where it’s created to where someone can analyze it. That movement is what this article is about.
What is a data pipeline, in plain terms? It’s a process that moves data from one place to another and prepares it for use along the way — extracting it, cleaning it, and landing it somewhere ready for analysis. Without pipelines, every system stays an island: a seismic station knows its own readings, a research database knows its own history, and nothing connects them into a usable whole.
Say a seismic station detects a magnitude 4.8 event.
Step 1 — The reading is created. It lands first in the station’s own operational system:
EventID: abc123
Magnitude: 4.8
Location: California
Time: 2026-07-18Useful for the station’s own monitoring — not yet ready for analysis.
Step 2 — Data is extracted. A pipeline pulls this new reading, whether the source is a database, an API, or a file.
Step 3 — Data is transformed. Formats get corrected, duplicates removed, new fields calculated, multiple sources combined.
Step 4 — Data is loaded into an analytical system — a data warehouse or lakehouse.
Step 5 — Data is used. Now someone can actually ask: how many events of this magnitude occurred this month? Where are they clustered? Is frequency increasing in this region? The pipeline is what made those questions answerable.
Data Sources → Ingestion → Raw Storage → Transformation → Data Modeling → Data Quality → Serving → ConsumptionLet’s walk through each stage.
Every pipeline starts somewhere — commonly databases (PostgreSQL, SQL Server, and similar), APIs (weather, financial, government, and — for this series — the USGS earthquake API), files (CSV, JSON, Parquet), or applications generating events and logs.
Ingestion is the pipeline’s entry point — collecting data from a source and bringing it into your platform:
USGS API → Python Script → Raw JSON FilesA common modern principle: capture first, process later. That gives you the ability to reprocess, debug, and preserve history without re-hitting the source.
Batch ingestion collects data at intervals — nightly, hourly, every 15 minutes — and works well whenever near-instant freshness isn’t required. Streaming ingestion processes each event the moment it arrives, used for things like fraud detection or live IoT monitoring, typically via tools like Apache Kafka or Amazon Kinesis.
| Batch | Streaming | |
|---|---|---|
| Timing | Scheduled | Continuous |
| Example | Daily earthquake summary | Real-time alerting |
| Complexity | Lower | Higher |
| Cost | Usually lower | Usually higher |
For beginners, batch is the right place to start — and it’s exactly where QuakeFlow begins.
After ingestion, data typically lands in a raw layer — sometimes called a landing zone or bronze layer — stored exactly as received:
json
{
"id": "abc123",
"magnitude": 4.8,
"location": "California",
"time": "2026-07-18"
}Keeping this untouched copy matters for three reasons: reprocessing (rebuild everything if your transformation logic changes), debugging (compare raw against transformed when something looks wrong), and history (preserve exactly what the source actually provided).
Raw data is rarely reporting-ready. A few common transformation tasks, with real examples:
Cleaning — inconsistent values need standardizing. Before:
Location
CA
California
Calif.After:
Location
CaliforniaRemoving duplicates — the same event ID appearing twice. Before:
EventID
abc123
abc123
def456After:
EventID
abc123
def456Joining data — combining station metadata with event readings so a single record carries both. Creating business logic — defining, say, what counts as a “significant” earthquake for alerting purposes, as a calculated field rather than something buried in someone’s head.
ETL (Extract, Transform, Load) cleans data before it lands in the target system — the traditional approach from when storage and compute were expensive:
Database → Python Transformation → Data WarehouseELT (Extract, Load, Transform) loads raw data first and transforms it afterward, inside the warehouse or lakehouse itself:
API → Data Lake → SQL Transformations → Analytics TablesELT became the modern default largely because cloud storage and compute got cheap enough that keeping raw data around and transforming later stopped being a luxury. Platforms like Databricks, Snowflake, and BigQuery are built around exactly this pattern.
Storing data isn’t the same as making it usable. Imagine three separate tables — Earthquakes, Stations, and Regions — and someone asks: “How many earthquakes occurred by region last year?” Answering that means combining information across all three. A good data model is what makes that combination simple instead of painful.
The most common analytical pattern is the star schema: a central fact table surrounded by dimension tables.
DimStation
|
DimRegion ---- FactEarthquake ---- DimDate
|
DimMagnitudeTypeFact tables store measurable events — earthquake readings, sensor logs, sales transactions — typically foreign keys plus numbers:
FactEarthquake
| DateID | RegionID | StationID | Magnitude |
|---|---|---|---|
| 20260718 | 12 | 401 | 4.8 |
Dimension tables describe the context around those facts — who, what, when, where:
DimRegion
| RegionID | Region | Country |
|---|---|---|
| 12 | California | USA |
This matters for Data Engineers specifically because the pipeline’s job doesn’t end when data arrives — it ends when someone can actually answer a question with it. The modeling choices you make directly determine how easy or painful that is for everyone downstream.
A BI Developer, for instance, doesn’t want to work with Raw_Events_20260718_JSON — they want FactEarthquake, DimRegion, DimDate. That gap is exactly why Data Engineering and BI work so closely together: one builds the foundation, the other builds the experience on top of it.
A pipeline can complete successfully and still be wrong. If it runs every night without error but today’s earthquake count is suddenly 90% lower than usual, something’s off — even though nothing “failed.”
Common problems include missing data (a magnitude field arriving null), duplicates (the same event ID appearing twice), invalid values (a magnitude of -5, or a region field reading "Unknown123"), and unexpected volume changes (500 readings today versus 15,000 yesterday, with no earthquake activity actually dropping that much).
Professional pipelines catch these automatically: row count checks (“did we receive roughly the expected number of records?”), duplicate checks (“are primary keys actually unique?”), completeness checks (“are required fields populated?”), and validity checks (“do values fall within acceptable ranges?”). A simple example: if today’s event count is under half of yesterday’s, send an alert — cheap to build, and it catches real problems before anyone downstream trusts bad numbers.
A real pipeline is rarely one script — it’s dozens of steps that need to run in the right order:
Extract Stations → Extract Earthquakes → Clean Data → Update Warehouse → Refresh DashboardAn orchestrator handles scheduling (“run nightly at 02:00”), dependencies (“don’t refresh the dashboard until the warehouse update finishes”), retries (“the API failed — try again in 10 minutes”), and monitoring (what succeeded, what failed, how long it took). Common tools include Apache Airflow, Azure Data Factory, and Databricks Workflows — you don’t need to master these as a beginner, just understand what problem they solve.
Professional pipelines log what happened — records ingested, transformations completed, load status — so a failure produces an actionable error rather than silence. The difference between a beginner script (load_data(); transform_data(); save_data()) and a production pipeline (extract → validate → transform → test → load → monitor → document) is entirely about reliability, not cleverness.
Every concept in this article comes together in the actual pipeline you’ll build starting next:
USGS Earthquake API
↓
Python Ingestion
↓
Raw JSON Data
↓
Data Storage Layer
↓
SQL Transformations
↓
Analytical Data Model
↓
Power BI DashboardStep 1: Extract — Python connects to the earthquake API and downloads events.
Step 2: Store Raw Data — The original JSON response is saved untouched, preserving your ability to reprocess, debug, and keep history.
Step 3: Transform — Dates get standardized, missing values handled, duplicates removed.
Step 4: Model — The cleaned data is organized into FactEarthquake, DimRegion, and DimDate.
Step 5: Analyze — Power BI connects to that model, and you can explore frequency, magnitude trends, and geographic patterns directly.
Plenty of beginners start by saying “I want to learn Airflow” or “I want to learn Spark.” But tools only make sense once you understand the problem they solve. A Data Engineer isn’t valuable because they know one specific tool — they’re valuable because they understand where data comes from, how it moves, how it should be stored, and how to make all of it reliable. Tools change constantly. These principles don’t.
One honest note before you move on: this series teaches Data Engineering concepts and practice — it does not teach Python from scratch. Part 1.2 already has you writing loops, dictionaries, and error handling. If terms like “variable,” “function,” or “for loop” are unfamiliar, spend a few focused hours on a basic Python primer first (any beginner tutorial covering syntax, data types, and control flow will do). You don’t need to be strong at Python — you need to be past the very first steps of it.
You’ve now completed Foundations: how data moves, who moves it, whether the role fits you, where data lives, and how it travels between systems.
Starting at Part 1.1, theory ends and QuakeFlow begins — setting up your development environment, writing your first ingestion script, and working with real earthquake data end to end. Stop learning about Data Engineering. Start doing it.
Next up → Part 1.1: Setting Up Your Data Engineering Environment — where Foundations ends and QuakeFlow actually begins.
[…] Understanding Data Pipelines […]
[…] Understanding Data Pipelines […]
[…] Understanding Data Pipelines […]