TRAINER ONLY
Day-of navigation (follow in order on delivery day):
Index → 2 Room prep → 3 Schedule & roles → 4 Module rhythm → 5 Module 7 runbook → 6 Classroom fixes → 7 Close & after
Before class: Platform dependency order (sidebar · links into checklist)
General & timing
| Pair stuck on Bronze ingest |
Point to checkpoint data / co-trainer pairs in |
| Reflection runs long |
5-min timer; capture 3 bullets max on whiteboard |
| Running late in Module 2–4 |
Cut discussion to 5 min — never cut lab |
Module 2 — Databricks
| Attendee cannot find notebooks in Databricks |
Guide to trainer’s shared Git folder: Workspace → Users → {trainer email} → MHP-DE-Workshop-2026; attendee clones 00_setup.py to Home per Databricks setup |
| Attendee’s Databricks cluster won’t start |
Check Compute page for error message; try Restart; if stuck >5 min, assign a buddy cluster |
| Story / Modules / During & after still locked on training day |
Likely Lock was clicked before delivery during dry-run — that sets force_locked and blocks midnight auto-open. Unlock each section (or all three) in Trainee management; after deploy, pre-delivery Lock no longer sets force_locked |
Trainee can create compute without Workshop policy |
workshop_trainees_2026 → Entitlements: turn Allow unrestricted cluster creation off; keep Workspace access, Databricks SQL access, and Admin access on — pre-class checklist § Entitlements |
| Databricks “Cannot see catalog” error |
Catalog permissions not applied — grant ALL PRIVILEGES on mhpdeworkshop_databricks_2026 to workshop_trainees_2026 via pre-class checklist § Databricks (Catalog → Permissions) |
Databricks CLI 403 Forbidden |
PAT may be expired or lack admin scope — generate a new token: Settings → User Settings → Access Tokens; ensure workspace has admin consent for CLI apps |
Module 3 — Snowflake
| Snowflake trial signup fails |
Suggest using a different email; check spam folder for verification email; trial creation can take 5–10 min |
Snowflake 02_account_setup.sql fails |
Check attendee is using ACCOUNTADMIN role (default for trial); confirm SET attendee_id = '...' was run first |
Snowflake DE_WORKSHOP_ROLE not found |
The role is created by 02_account_setup.sql — re-run the script; or manually: CREATE ROLE DE_WORKSHOP_ROLE; |
| Snowflake External Stage cannot list files |
ADLS2 SAS token may be expired or have extra spaces; re-copy from trainer handout; verify stage URL matches mhpdeworkshopsa.blob.core.windows.net |
| Snowflake warehouse shows “Suspended” |
Click warehouse name at top-right → click Resume; wait ~10 seconds for Started status |
| Workspaces SQL file shows “No results” |
Check session variable: SELECT $attendee_id; — if null, re-run the SET statement at the top |
Module 4 — dbt
| “dbt replaces Snowflake” |
Draw platform box; dbt inside as transform layer |
dbt debug fails with connection error |
Check profiles.yml — confirm database: DE_MASTERCLASS, role: DE_WORKSHOP_ROLE, and correct Snowflake account/user/password |
Module 7 — Discussion
| Vendor debate in Module 7 |
“We’re advising Marcus, not picking a winner for MHP.” |
Module 8 — Streaming
Module 8: workshop-scope secrets scope missing |
Trainer must create scope before class (see pre-class checklist § Databricks secrets); or guide attendee: databricks secrets create-scope --scope workshop-scope |
Databricks: ClassNotFoundException for Kafka / Avro |
Install both Maven libs on cluster and restart: spark-sql-kafka-0-10_2.12:3.5.0, spark-avro_2.12:3.5.0 — see Aiven streaming setup |
Databricks: ssl.SSLError or AuthenticationException |
Check workshop-scope secrets (aiven-ca-cert, bootstrap servers, client cert/key) — facilitator reloads from Aiven Console |
| Snowflake Bronze empty after 3+ min |
Confirm relay consumer running; check ADLS2 path streaming/user-activity/ for new files; run ALTER PIPE … REFRESH if Event Grid not configured |
| Snowflake setup script fails on config |
Attendee must complete 02_account_setup.sql + 04_external_stage.sql first (_workshop_config missing) |
| Aiven service offline |
Free tier shuts down after 24h idle — restart from Aiven Console; restart User Activity generator (4h max runtime) |
| dbt streaming models in wrong schema |
dbt lands in {ATTENDEE_ID}_DBT_STREAMING, not _STREAMING — see dbt_project.yml +schema: dbt_streaming |
Module 9 — ML
| Databricks Experiments page is empty |
The experiment appears after the first mlflow.start_run() call — run the training notebook first |
ML.FORECAST returns error in Snowflake |
Run Step A0 in ml/snowflake/01_cortex_ml.sql to create V_HOURLY_TRIPS_BY_BOROUGH; if access denied, attendee re-runs 05_cortex_access.sql on their trial |
| Snowflake Task exercise fails on table name |
Gold tables are kpi_* (e.g. kpi_trips_by_hour), not GOLD_KPI_* |
AI_COMPLETE or ML.FORECAST access denied |
Trainee re-runs snowflake/sql/setup/05_cortex_access.sql as ACCOUNTADMIN on their trial; confirm SNOWFLAKE.CORTEX_USER on DE_WORKSHOP_ROLE or SYSADMIN |
| Snowpark ML stretch: table not found |
Script defaults to _SQL_SILVER / _SQL_GOLD — complete Module 3 SQL track first; or set SNOWFLAKE_SILVER_SCHEMA / SNOWFLAKE_GOLD_SCHEMA for _SP_* track |
dbt ml_features not in _SQL_GOLD |
dbt lands in {ATTENDEE_ID}_DBT_GOLD — check SHOW TABLES IN SCHEMA …_DBT_GOLD |
dbt accepted_values fails on payment type |
Use 'Credit card' exactly (title case) — matches Silver pipeline casing |
| Cortex Part C SQL fails |
Part C is optional — requires Stretch B Snowpark ML (ML_TIP_PREDICTIONS_SNOWPARK) |
| Genie space empty |
Connect Genie to {attendee_id}_gold schema after Gold KPIs exist |
Snowpark NameError: session in production sproc |
snowpark_sproc.py imports from _snowpark_bootstrap.py — edit fallback block or use .env |