← All courses

🦆 DuckDB

Analytics inside your own process — query Parquet and CSV where they lie, work on data larger than memory, and the SQL extras (ASOF joins, PIVOT, QUALIFY) that make analytical questions short.

No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.

Before you start: Learn SQL — Series 1 and Series 2. Every episode here is a query. You need joins, GROUP BY and window functions already — what this track adds is where the data can live, and the analytical SQL that other engines make you write the long way.

Short on time? The 14 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.


Series 1 · DuckDB Essentials

query the files you already have, without loading them anywhere

  1. 01

    DuckDB — A Database With No Server, Inside the Process You Already Have

    coreintermediatecoming soon
  2. 02

    Querying Parquet, CSV and JSON Where They Lie — No Load Step

    coreintermediatecoming soon
  3. 03

    Messy CSV — Type Sniffing, Rejected Rows and Files Whose Columns Drifted

    coreintermediatecoming soon
  4. 04

    COPY TO — Writing Parquet, Partitioned Folders and a Portable Database File

    coreintermediatecoming soon
  5. 05

    LIST, STRUCT and MAP — Nested Data as Columns, Without Flattening First

    intermediatecoming soon
  6. 06

    Backing Up a Database That Is One File — EXPORT DATABASE and the Version Question

    coreintermediatecoming soon
  7. 07

    Project — Answer a Question From a Folder of Files, With No Database

    coreintermediate#projectcoming soon

Series 2 · Analytical SQL

the dialect extras, and data larger than memory

  1. 01

    QUALIFY, GROUP BY ALL and EXCLUDE — DuckDB's Own SQL, and What It Costs in Portability

    coreadvancedcoming soon
  2. 02

    ASOF JOIN and PIVOT — The Time-Series Join, and Cross-Tabs Without CASE

    coreadvancedcoming soon
  3. 03

    Larger Than Memory — Spilling, memory_limit, and What Actually Has to Fit

    coreadvancedcoming soon
  4. 04

    EXPLAIN ANALYZE and Pushdown — Why This Engine Does Not Want Your Indexes

    coreadvancedcoming soon
  5. 05

    One Writer — The Concurrency Model, and Why This Is Not an Application Database

    advancedcoming soon
  6. 06

    Project — A Multi-File Analysis That Would Not Fit in Memory

    coreadvanced#projectcoming soon

Series 3 · In the Real Stack

extensions, other databases, and where it runs out

  1. 01

    Extensions and ATTACH — Joining a Live Postgres Table to a Parquet File

    coreadvancedcoming soon
  2. 02

    Reading Iceberg and Delta — DuckDB as the Engine Over a Lakehouse

    advancedcoming soon
  3. 03

    The Clients — CLI, Python, JDBC and WASM, and What Changes Between Them

    advancedcoming soon
  4. 04

    Where DuckDB Runs Out — and How Far One Machine Actually Goes

    coreadvancedcoming soon
  5. 05

    Project — Replace a Small Pipeline With a Single Query

    coreadvanced#projectcoming soon

Not here, on purpose

  • SQL itself — SELECT, JOIN, GROUP BY, CTEs and window functions — covered in Learn SQL. Here the subject is DuckDB's own additions to it
  • Why columnar storage is fast for analytics — covered in Data Warehousing, Series 2 · 00. This track assumes it and gets on with using it
  • Designing a star schema to load into it — covered in Data Modeling, and loaded in Data Warehousing, Series 1 · 20
  • Calling DuckDB from application code — covered in Java & Groovy for Data, Series 2 · 45 and in Python for Data. In this course, Series 3 · 00 covers the clients only as far as choosing between them