Pipeline to Dashboardnihalsulaiman.com

Setup

Do this before Day 1 (about 1–2 hours). Everything is free. Your Windows laptop works for all of it; Power BI Desktop is Windows-only.

Core tools

Tool Why Install
Python 3.12+ Everything python.org or winget install Python.Python.3.12
uv Projects, venvs, lock files pip install uv or docs.astral.sh/uv
Git + GitHub account Version control, portfolio git-scm.com
VS Code Editor (+ Python, SQL Server (mssql), dbt extensions) code.visualstudio.com
Docker Desktop (with WSL2 on Windows) Postgres, SQL Server, MinIO, SFTP, ClickHouse, Metabase locally docker.com
DuckDB CLI Fast SQL on files duckdb.org
Claude Code AI pair programmer, with your bi-skills-kit CLAUDE.md claude.ai/code
Power BI Desktop Week 6 Microsoft Store
DAX Studio, Tabular Editor 2 Week 6 model tuning daxstudio.org, tabulareditor.com
Ollama Local LLMs (Week 2, 7) ollama.com
ODBC Driver 18 for SQL Server Python → Azure SQL Microsoft docs
Azure CLI az login for Entra tokens Microsoft docs

Accounts

  • Azure free account for Azure SQL Database (free offer), Key Vault and Blob. Set a budget alert on day one. Delete resources you don't need at the end of each week.
  • Optional: a Microsoft 365 developer or trial tenant for Graph mail/SharePoint and Power BI service practice. If you can't get one, every lab has a local alternative.
  • A throwaway Gmail with an app password for IMAP practice.

Course data

mkdir p2d && cd p2d
# copy starter/generate_data.py from this site's folder
uv venv && uv pip install pandas numpy openpyxl
uv run python generate_data.py --start 2026-09-01 --days 60 --out ./data

Options: --days (length), --seed (different random data), --clean (no seeded faults; useful for checking a pipeline before turning faults back on).

Folder layout across the course

p2d/
├── data/                # generated; git-ignored
├── retail-ingest/       # Week 1
├── qsr-clean/           # Week 2
├── hotel-dagster/       # Week 3
├── ads-warehouse/       # Week 4
├── restaurant-dbt/      # Week 5
├── chain-dashboards/    # Week 6
└── daily-data-platform/ # Week 7 capstone

Rules for the whole course

  1. Synthetic or public data only. No employer names, systems, files or figures.
  2. Secrets in .env (git-ignored) or a vault. Run gitleaks before any push.
  3. Type the code; don't paste it. When Claude Code writes something, you must be able to explain each line.
  4. Every day ends with a commit and three lines in My notes.