Hands-on repo bridging applied analytics (SQL, BI, warehousing) and systems internals (Spark, SQL tuning, streaming, lakehouse patterns). Assessment is prove-it: runnable jobs, captured plans, and passing pytest.
- Setup — WSL, Windows,
uv, Docker (infra/), andmakecommands - Progression — the beginner→cap onboarding ladder on one page
- Curriculum — tiered reading lists and sequencing (committed in
docs/) - Modules & labs — which folder, which services, which commands
- Module folders — direct links to exercises and READMEs
Optional local textbook extracts only: references/ (gitignored). Do not commit publisher material there.
- README.md — you are here
- docs/progression.md — the absolute-beginner → cap ladder on one page
- docs/setup.md — WSL, Docker,
uv,make - docs/modules.md — which service and commands per module
- modules/NN_*/README.md — exercises for the module you are on (e.g. 02 SQL)
- docs/curriculum.md — reading lists when you need depth
Run from WSL at the repo root. See setup for Windows without WSL.
cp .env.example .env
make setup
make up
make seed
make load-sql
make test
make spark-submit JOB=modules/04_spark_internals/join_aggregate_job.py
make checkNative Windows (no WSL) — same steps via the PowerShell task runner:
Copy-Item .env.example .env
.\tasks.ps1 setup
.\tasks.ps1 up
.\tasks.ps1 seed
.\tasks.ps1 testuv sync --extra cloud # install fsspec backends (s3fs/gcsfs/adlfs)
make up-cloud # LocalStack + fake-gcs + Azurite
uv run python modules/09_cloud_portability/object_store_roundtrip.py --cloud aws
make test-cloud
make down-clouduv sync --extra dbt # install dbt-duckdb
make dbt-run # build models, run data tests, generate the catalog
make test-dbt- 01Python · light (by design — least role-relevant)
- 02SQL · built
- 03BI · built (concepts)
- 04PySpark · built
- 05Warehousing · built
- 06Kafka · built (roundtrip + concepts)
- 07AI-assisted · agent files
- 08Lakehouse · built
- 09Cloud portability (AWS/GCP/Azure) · built
- 10dbt / orchestration / data catalog · built
make seed-large
# or: uv run python -m def_.datagen.cli --scale-gb 2.0Learning use. Keep long textbook paste in local references/ only.