DATA ENGINEERING BOOTCAMP — THE BOOK
Phase 2: Data Processing
& Architecture
Weeks 5–8. You already know Python and SQL from Phase 1 — now they stop being separate
skills and become one automated system: pandas, ETL pipelines, cloud storage, and data warehousing,
all built around the same BrightCart dataset.
Where You Left Off
Phase 1 ended with a working brightcart Postgres database, a GitHub repo with real projects, and a star schema you queried by hand. If any of that felt unfamiliar, revisit Phase 1 first — this book assumes it's solid.
pandas
A DataFrame is just a smarter list of dictionaries.
ETL pipelines
Extract/transform/load as code that runs the same way every time.
Cloud & warehousing
Moves BrightCart's data off your laptop and into infrastructure built for scale.
Tool Spotlight: Pandas
Meeting dirty_orders.csv
Time to clean the file that's been waiting since Phase 1's Introduction. It's a denormalized export of BrightCart orders with every problem real data actually has: inconsistent casing, mixed date formats, missing amounts, and duplicate rows.
step 1: profile the damage before fixing anything
df = pd.read_csv("data/dirty_orders.csv")
print(df.shape) # (47, 6) <- should be 45 real orders...
print(df.isna().sum())
the fix — and the row count lines up with orders.csv again
df["customer_name"] = df["customer_name"].str.strip().str.title()
df["status"] = df["status"].str.strip().str.lower()
df["order_date"] = pd.to_datetime(df["order_date"], format="mixed", errors="coerce")
df["amount"] = df["amount"].fillna(0)
df = df.drop_duplicates(subset=["order_id"], keep="first")
print(df.shape) # (45, 6) <- matches the real order count
`&` and `|`, not `and` / `or`
Inside a pandas filter, use & for "and" and | for "or" — Python's own and/or don't work row-by-row across a whole column the way these do. This trips up almost everyone the first time.
Chapter 1 Checklist — before moving on, you should be able to:
- Explain the difference between a
Series and a DataFrame - Profile a new CSV with
.shape, .info(), and .isna().sum() - Fix inconsistent text, mixed date formats, missing values, and duplicate rows in pandas
WEEK 6 · LOCKED
Building ETL Pipelines
Extract, Transform, and Load as three testable functions — plus secrets management, SQLAlchemy loads, retries, idempotency, and validation asserts.
- What Is a Pipeline? (ETL vs ELT)
- Tool Spotlight: python-dotenv & Config Files
- Tool Spotlight: SQLAlchemy
- Extracting From an API, Properly (pagination + retries)
- Loading Into Postgres: Strategy Matters
- Idempotency: Rerun Safely
- Logging & Validation Checks
- Portfolio Project — End-to-End ETL Pipeline
WEEK 7 · LOCKED
Cloud Engineering 101
Object storage, IAM & least privilege, serverless compute, and the cost guardrails that keep your first cloud bill from surprising you.
- Cloud Vocabulary (AWS ↔ GCP)
- Tool Spotlight: AWS CLI
- Object Storage: raw / staging / curated
- IAM & Least Privilege
- Serverless Compute (Lambda shape)
- Portfolio Project — Deploying Scripts to the Cloud
WEEK 8 · LOCKED
Modern Data Warehousing
Columnar storage, raw → staging → mart layering, physical star schema tables (CTAS), partitioning/clustering, and query cost mindset.
- Why a Dedicated Warehouse? (BigQuery / Snowflake / Redshift)
- From Views to Physical Tables (CTAS)
- Partitioning & Clustering
- Marts: The Final, Dashboard-Facing Layer
- Portfolio Project — Cloud Data Warehouse Setup & Dashboarding
PHASE 2 COMPLETE · LOCKED
Wrap-Up & What's Next
Your full Phase 2 portfolio evidence checklist, and what changes going into Phase 3 (Airflow, Spark, Docker).
FULL PHASE 2 ACCESS
Unlock Chapters 2–5
Get the complete ETL pipelines, cloud engineering, and data warehousing chapters — with full code, diagrams, and portfolio project instructions — plus every future update to this book.