Friday Fabric Facts #20

Fabric Capacity, Part 1: Why Your Bill Doesn’t Match Your Usage (Part 1 of a 3-part Series)

The Executive Insight

Most teams read their first few Fabric bills and reach the same conclusion: the number doesn’t line up with anything they did that month. A quiet week costs the same as a busy one. A single afternoon of heavy refreshes shows up days later. The report nobody runs seems to cost as much as the one everybody lives in.

That isn’t a billing error. It’s the capacity model working as designed, and misunderstanding it is the most expensive mistake mid-market teams make with Fabric.

The shift in thinking is this: you are not renting a server sized to your biggest workload. You are buying a throughput budget that every workspace, report, pipeline, and notebook draws from the same shared pool. Once that clicks, the bill stops being mysterious and starts being manageable.

Issue #20 is Part 1 of three. This one explains why the bill behaves the way it does. Part 2 covers right-sizing, and Part 3 covers governing capacity across domains.

What a Capacity Actually Is

A Fabric capacity is an F-SKU (F2, F4, F64, and up), and what it buys is a pool of Capacity Units: a fixed amount of compute throughput per second.

Two properties make it behave unlike a traditional database server:

It’s shared, not partitioned. Every workspace assigned to that capacity competes for the same CU pool. A heavy Spark job in Operations and a dashboard refresh in Finance draw on the same budget at the same time.

It’s measured over time, not at the instant. Fabric doesn’t bill you for the peak moment of a query. It spreads that consumption across a window through a mechanism called smoothing, so a sharp spike gets averaged into a flatter line.

So a capacity isn’t a box with a fixed ceiling you hit and bounce off. It’s a budget you can briefly overspend and then pay back.

Why the Bill Surprises You

Three behaviors explain almost every “why does this cost that” question.

Smoothing spreads cost across time. A thirty-second burst of heavy compute doesn’t appear as a thirty-second charge. It’s smeared across a longer window (minutes for interactive work, up to a full 24 hours for scheduled background jobs), which is why today’s spike shows up in tomorrow’s consumption, and why a quiet week can still look busy: you’re often still paying down earlier activity.

Bursting lets jobs exceed the base rate. Fabric will let a demanding job temporarily consume more CU than your SKU nominally provides, then reconcile the overage through smoothing. Useful, and also the reason a single large refresh can echo through your usage for hours.

Throttling is what happens when you overspend the budget. Borrow too much future capacity and Fabric rations throughput in progressive stages: first it delays new interactive requests, then it starts rejecting them outright, and at the far end it rejects background work too, until the borrowed capacity is paid back. The bill didn’t spike; your throughput got rationed. Teams often experience this as “Fabric got slow” without connecting it to a capacity running hot.

None of this maps to the intuition people bring from per-server or per-query pricing. The cost reflects aggregate CU consumption over time, across everything sharing the capacity, not the price of any single report.

What This Changes

Once the model is clear, the planning questions change.

You stop asking “how big a server do we need” and start asking “what’s our throughput budget, and who’s drawing on it.” You stop sizing for your single worst-case job and start thinking about the combined load of everything sharing the pool. And you start treating capacity as something to be watched and governed, not set once and forgotten.

That reframing is the point of this series. Part 2 is about picking the right F-SKU without overpaying for headroom you rarely use or underprovisioning into constant throttling. Part 3 is about the harder problem: many domains on shared capacity, noisy-neighbor effects, and how to answer the question every CFO eventually asks, which is “who is really spending this.”

Hope for Lean Teams

You don’t need a FinOps function to stay in control of Fabric cost. You need the mental model above and two habits.

First, watch the Capacity Metrics App. It shows what’s consuming CU and when, and it’s the single most useful artifact for turning “the bill is weird” into “the Tuesday-night refresh is the problem.” Second, use pause and resume where the workload allows. For pay-as-you-go capacities, pausing stops ongoing consumption (you settle any accumulated future-capacity usage at that point), which makes it a clean way to take dev and test capacities offline overnight.

That’s most of cost discipline for a lean team: understand the budget, watch what draws on it, and turn off what you’re not using.

Where I Fit In

Capacity is where Fabric quietly rewards the teams that understand it and penalizes the ones that don’t. The mapping from workload to CU consumption, the sizing call, and the governance model across domains are exactly the decisions that determine whether Fabric feels efficient or expensive.

If your Fabric bill doesn’t line up with your intuition, and you want to understand what’s driving it before you size up or split capacities, let’s talk.

Isaac Truong | Founder, Allston Yale Strategic Fabric Architecture for the Enterprise Mid-Market

Fabric capacity isn’t a server. It’s a shared throughput budget with a memory. Once you read the bill that way, it stops being a surprise and starts being a lever.

Next week, Part 2: how to size an F-SKU without overpaying for idle headroom or starving your workloads into throttling.

Isaac Truong | Founder, Allston Yale

Enterprise-grade analytics for $50M–$100M SMBs

Power BI | Fabric | Azure | Data Strategy

Book a 20-min Fabric diagnostic →

Subscribe to get Friday Fabric Facts in your inbox (plus early access to templates)

LinkedIn: Connect with me for daily Fabric tips

Friday Fabric Facts #20: Originally Posted on LinkedIn, June 12, 2026

Scroll to Top