The production engineering manual for Microsoft Fabric

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.

30+
production guides
6
engineering domains
CU
impact stated on every page
silver_orders.Notebook.py

# Idempotent by default — re-running is always safe
from delta.tables import DeltaTable

await (
    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: nightly OPTIMIZE pays for itself in a week
spark.sql("OPTIMIZE silver.orders")
For data engineers

Taming lakehouses, Spark jobs, and Delta table sprawl.

For enterprise architects

Designing OneLake topology, security, and CI/CD that scales.

For analytics leads

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.

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
Production PySpark patterns
resource_profile.py

# Match the profile to the workload shape —
# one setting flips ~20 Spark configs correctly
spark.conf.set(
    "spark.fabric.resourceProfile",
    "readHeavyForSpark",
)

if job.is_streaming_sink:
    profile = "writeHeavy"
elif job.feeds_direct_lake:
    profile = "readHeavyForPBI"

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.