Microsoft docs tell you what.
fabdocs.dev tells you how.
Build, deploy, govern, and scale lakehouses, notebooks, and CI/CD pipelines in production — without torching your capacity budget.
- 34+
- production guides
- 6
- engineering domains
- 5
- starter kits, $49 each or with Pro
# Idempotent by default — re-running is always safe
from delta.tables import DeltaTable
(
DeltaTable.forName(spark, "silver.orders")
.alias("t")
.merge(incoming.alias("s"), "t.order_id = s.order_id")
.whenMatchedUpdateAll(condition="s.updated_at > t.updated_at")
.whenNotMatchedInsertAll()
.execute()
)
# CU impact: fewer, larger files — cheaper on every downstream read
spark.sql("OPTIMIZE silver.orders")
Taming lakehouses, Spark jobs, and Delta table sprawl.
Designing OneLake topology, security, and CI/CD that scales.
Making Capacity Unit burn predictable and defensible.
What’s inside
Six areas, each with production-tested patterns and a stated CU impact — not a feature tour.
Delta optimization, V-Order tuning, VACUUM & retention, and multi-cloud shortcuts that stay consistent.
OpenProduction PySpark patterns, the Native Execution Engine, resource profiles, and surviving Runtime upgrades.
OpenWorkspace-as-code: Git integration, deployment pipelines, variable libraries, GitHub Actions for Fabric.
OpenOneLake security roles, workspace identity, and audit logging that passes a compliance review.
OpenAn interactive CU cost & capacity calculator, plus a VS Code sync guide to escape the web UI.
OpenStep-by-step conversions from Databricks, Snowflake, and SSIS — inventory, move a slice, validate, cut over.
OpenAn AI that cites its sources, and packs that ship as code
The assistant is free in small doses; the packs are Pro-only. $5/mo unlocks both.
Grounded in the docs — it searches fabdocs.dev before answering and cites the pages it used, instead of guessing. Click the sparkle on any snippet to get it explained inline.
Real, runnable artifacts — not templates you rewrite from scratch: GitHub Actions workflows, tested PySpark notebooks, a OneLake security model, migration toolkits, monitoring.
Patterns, not screenshots
Every notebook is a function: inputs from parameters, deterministic output, safe to re-run. Every page states what a technique costs in Capacity Units before it tells you how to do it.
- Idempotent MERGE and replaceWhere — never blind appends
- Native Execution Engine tuning to cut CU per run
- Deployment pipelines + variable libraries, no manual publish
# Match the profile to the workload shape —
# one setting flips ~20 Spark configs at once
spark.conf.set(
"spark.fabric.resourceProfile",
"readHeavyForSpark",
)
if job.is_streaming_sink:
profile = "writeHeavy"
elif job.feeds_direct_lake:
profile = "readHeavyForPBI"
From the blog
Longer writing that pulls the reference material together.
October 18, 2026
Fabric deployment pipelines have no rollback button
A bad prod deploy doesn't get undone — it gets fixed forward, by redeploying the previous known-good state from dev, which only works if you can find it.
October 18, 2026
Git-connecting a Fabric workspace doesn't back up your data
Notebooks, pipelines, and semantic models round-trip through Git cleanly. A lakehouse's actual table data never does — only its schema and shortcuts.
The Fabric change briefing
A tight technical digest of what changed in Microsoft Fabric — new runtimes, API updates, breaking changes — and what to do about it.
Fabric runtime changes, API updates, and deprecations. No spam, unsubscribe anytime.
Start with the slice that hurts most
Runaway CU bills, a lakehouse full of small files, or a deployment process that lives in someone’s head.