Microsoft Power BI • Paginated Reports and Enterprise Features

Premium/Fabric Capacity — Explain Power BI Premium/Fabric capacity concepts at a high level (conceptual)

Understanding dedicated compute resources that power enterprise-scale analytics in Power BI and Microsoft Fabric.

Microsoft Power BI emblem with a dashboard, stacked chart, and database.
Inside this lesson 10 sections 5 questions 8 figures

SECTION 1

Historical Context & Motivation

When Microsoft first released Power BI in 2015, the service operated on a shared-capacity model in which every tenant's workloads competed for the same pool of cloud compute resources. This architecture worked well for small-scale dashboards and self-service analytics, but enterprises that needed deterministic performance, large dataset sizes, and strict data-governance controls quickly ran into ceilings. The shared pool meant that a neighbor's heavy refresh could degrade your query latency—a classic noisy-neighbor problem familiar to anyone who has studied multi-tenant cloud systems. Microsoft responded by introducing a dedicated compute tier, evolving it over several years into what we now call Power BI Premium and, more recently, Microsoft Fabric capacity. Understanding this evolution is key to grasping why capacity-based licensing exists and how it shapes enterprise analytics architectures.

2015 • Power BI General Availability

Microsoft launches Power BI as a cloud-based SaaS analytics tool running entirely on shared infrastructure. All Pro-licensed users share the same compute pool with 1 GB dataset size limits.

2017 • Power BI Premium Introduced

Microsoft announces Power BI Premium (P SKUs), offering dedicated v-core capacity reserved for a single organization. Dataset size limits jump to 10 GB (later 400 GB), and paginated reports gain first-class support.

2020 • Premium Per User (PPU)

A per-user Premium license arrives, democratizing Premium features for smaller teams that cannot justify a full P1 node. PPU provides isolated capacity on a per-seat basis.

2022 • Premium Gen2 & Autoscale

Gen2 architecture replaces fixed memory pools with dynamic allocation. Autoscale allows automatic v-core bursting to handle demand spikes, billing only for extra seconds consumed.

2023 • Microsoft Fabric & F SKUs

Microsoft unifies Power BI Premium, Azure Synapse, and Data Factory into Microsoft Fabric. New F SKUs (Fabric capacities) replace P SKUs, offering a unified compute pool for lakehouse, warehouse, and BI workloads.

The central question this lesson addresses is: What exactly is a "capacity" in the Power BI / Fabric ecosystem, how does it differ from shared infrastructure, and how should an architect reason about capacity sizing and governance? Answering this question requires examining compute isolation, SKU hierarchies, workload management, and the unification story behind Microsoft Fabric.

SECTION 2

Core Principles & Definitions

At its heart, a capacity is a reserved pool of virtual compute cores (v-cores) and memory that is exclusively allocated to your organization's workloads. Unlike the shared-capacity model where resources are distributed across many tenants in a best-effort fashion, a capacity guarantees a minimum compute floor. In computer-science terms, think of shared capacity as a time-shared CPU where your process may be preempted, whereas dedicated capacity is more akin to reserving a bare-metal machine or a set of VM cores—your workloads never contend with external tenants for CPU cycles.

1

Capacity

A named compute resource in Azure that provisions a fixed number of v-cores (also called Capacity Units, or CUs). Workspaces are assigned to a capacity, and all operations within those workspaces draw from that capacity's resource pool.
2

SKU (Stock Keeping Unit)

The tier label that encodes the size and cost of a capacity. Premium used P1–P5; Fabric uses F2–F2048. Each step roughly doubles v-cores and throughput. The SKU determines maximum dataset size, refresh concurrency, and memory ceiling.
3

Workspace Assignment

Each Power BI workspace is bound to exactly one capacity (or to shared capacity by default). Moving a workspace to a Premium/Fabric capacity unlocks features like paginated reports, XMLA endpoints, deployment pipelines, and larger datasets.
4

Workload Throttling & Smoothing

Fabric uses a capacity unit (CU) smoothing algorithm that allows short bursts above the v-core ceiling. Sustained overuse triggers throttling, reducing concurrency or queuing operations rather than failing them outright.
5

Autoscale & Pause/Resume

Fabric capacities (F SKUs) can be paused when idle to save cost and resumed on demand via Azure APIs. Autoscale provisions additional v-cores during peak load, billing per second of extra compute—a pay-as-you-go safety valve.
✦

KEY TAKEAWAY

Think of shared capacity as a public Wi-Fi network at a busy airport: everyone shares the same bandwidth, and peak-hour congestion is unpredictable. A Premium/Fabric capacity is like leasing a dedicated Ethernet line—you pay more, but your throughput is isolated and contractually guaranteed. In distributed-systems terms, you are purchasing a resource reservation with a known SLA, eliminating the variance that characterizes best-effort scheduling.

SECTION 3

Visual Explanation — Capacity Architecture

Power BI / Fabric Capacity ArchitectureShared CapacityTenant A WSTenant B WSTenant C WSTenant D WSNoisy-neighbor riskPremium Capacity (P1)Sales WSFinance WSPaginated Reports WS8 v-cores · 25 GB RAMFabric Capacity (F64)LakehouseWarehousePower BIData Factory64 CUs · Unified poolAzure Infrastructure LayerCompute (VMs) · Storage (OneLake / Azure Blob) · NetworkingDashed = best-effortSolid = dedicated reservationKey Differences at a GlanceShared: 1 GB datasetsPremium: 400 GB datasetsFabric: Unified analyticsNo XMLA · No paginatedXMLA · Paginated · DPs+ Lakehouse · Warehouse
The diagram contrasts three deployment models: shared capacity (left, dashed connection indicating best-effort), Premium capacity (center, dedicated v-cores), and Fabric capacity (right, unified pool serving multiple workload types). All capacities sit atop the Azure infrastructure layer.

The visual above highlights the fundamental architectural distinction. In shared capacity, workspace compute requests are multiplexed across a common pool, meaning that Tenant A's dataset refresh can delay Tenant B's interactive queries. Premium capacity, by contrast, reserves a fixed number of v-cores—eight in the case of a P1 SKU—exclusively for your organization's workspaces. The key insight for Fabric capacity is the unification of workload types under a single capacity unit pool. Rather than purchasing separate Azure Synapse compute, Data Factory integration runtimes, and Power BI Premium nodes, a single F64 capacity provides 64 capacity units that can be dynamically allocated across lakehouse queries, warehouse SQL, data pipelines, and BI reports. This is conceptually analogous to how a modern OS scheduler distributes CPU time across processes of different priority classes—except here the 'processes' are distinct analytics workloads.

SECTION 4

How Capacity Sizing & Throttling Work

While Premium/Fabric capacity is a conceptual rather than purely mathematical topic, understanding the quantitative model behind capacity unit (CU) consumption is essential for architects and data engineers. Every operation—dataset refresh, DAX query, paginated report render, Spark notebook execution—consumes CU-seconds, which are metered against your capacity's budget. Microsoft's Gen2 / Fabric architecture uses a smoothing window to allow short bursts above the nominal throughput, similar to a token-bucket algorithm in network traffic shaping.

CU BUDGET PER WINDOW

CUbudget=SKUCUs×WindowsecondsCU_budget = SKU_CUs × Window_seconds

Where SKU_CUs is the number of capacity units provisioned (e.g., 64 for F64), and Window_seconds is the evaluation period (typically 30 seconds for interactive operations). An F64 capacity therefore accumulates 64 × 30 = 1,920 CU-seconds per evaluation window.

UTILIZATION RATIO

U=CUconsumed/CUbudgetU = CU_consumed / CU_budget

When U exceeds 1.0 within a window, the capacity enters throttling. At U > 1.0, interactive queries are delayed. At U ≫ 1.0 (sustained), background operations such as dataset refreshes may be rejected entirely. Autoscale, if enabled, adds temporary CUs to push U back below 1.0.

BURST ALLOWANCE (CONCEPTUAL)

BurstCUs=SKUCUs×Burstmultiplier×BurstdurationBurst_CUs = SKU_CUs × Burst_multiplier × Burst_duration

Fabric allows short-lived bursts at up to 10× the nominal CU rate. The Burst_multiplier decays over time: a 10× spike lasting a few seconds is permissible, but the same spike sustained over 5 minutes would trigger throttling because the average over the smoothing window would exceed the budget.

💡

CS Analogy: Token Bucket

If you have studied network rate-limiting, the CU smoothing model is directly analogous to a token bucket. Tokens (CU-seconds) are added to the bucket at a constant rate equal to SKU_CUs. Each operation drains tokens proportional to its cost. When the bucket empties, packets (operations) are queued or dropped. Autoscale is equivalent to dynamically increasing the token refill rate.

The practical implication is that capacity sizing is not simply a matter of peak throughput but rather average sustained load. A well-sized capacity should maintain U below 0.7 during normal business hours, leaving headroom for refresh storms and ad-hoc query spikes. Microsoft provides the Capacity Metrics App to monitor CU consumption in near-real time, giving administrators a dashboard analogous to CPU and memory monitoring in a traditional server environment.

SECTION 5

SKU Hierarchy & Feature Mapping

Choosing the right SKU is a core architectural decision. Both legacy Premium (P) SKUs and current Fabric (F) SKUs follow a geometric scaling pattern where each step roughly doubles the capacity units and, consequently, the cost. The table below maps the most commonly discussed SKUs to their resources and unlocked feature sets. Note that Fabric F SKUs start as low as F2, making capacity-based features accessible for development and testing scenarios—something that was not feasible when the cheapest option was P1 at roughly $5,000/month.

SKUCUs / v-coresMax Dataset (GB)Paginated ReportsXMLA Read/WriteFabric Workloads
Shared (Pro)N/A (shared)1✗Read only✗
PPUPer-user slice100✓Read / Write✗
F22 CU3✓Read / Write✓
F64 (≈ P1)64 CU400✓Read / Write✓
F128 (≈ P2)128 CU400✓Read / Write✓
F20482048 CU400✓Read / Write✓

SKU comparison across shared, Premium Per User, and Fabric capacity tiers

Fabric SKU Scaling — Capacity Units by TierF2048 2048 CUF512512 CUF128128 CUF6464 CU (≈ P1)F22 CU (dev/test)Capacity Units (logarithmic visual scale)Each doubling of CUs ≈ doubles throughput and cost
Horizontal bar chart showing the dramatic scale difference between F SKUs. The F2048 tier provides 1,024× the capacity of F2, illustrating the geometric scaling model. Bars are on a compressed visual scale to fit the range.

Several features are capacity-gated, meaning they are unavailable on shared capacity and only become available when a workspace is assigned to a Premium or Fabric node. The most important of these for enterprise scenarios include: paginated reports (pixel-perfect, multi-page reports suitable for printing), XMLA read/write endpoints (enabling third-party tools like Tabular Editor or SSMS to connect to datasets), deployment pipelines (dev → test → prod promotion workflows), and the ability to host datasets exceeding 1 GB. In the Fabric era, capacity additionally unlocks lakehouse, warehouse, KQL database, and data pipeline workloads, consolidating the entire analytics stack under one billing and governance umbrella.

SECTION 6

Worked Example — Sizing a Fabric Capacity

Consider a mid-size enterprise that currently runs Power BI on shared capacity and wants to migrate to Fabric. The analytics team supports 200 report consumers, 15 dataset refreshes per day, 3 paginated report workloads, and plans to add a Fabric Lakehouse for data engineering. We will walk through a conceptual capacity-sizing exercise.

Sizing a Fabric Capacity for Contoso Analytics

  1. 1

    Step 1 — Inventory Current Workloads

    We begin by listing all workload types that will run on the capacity. Contoso has: (a) 12 interactive Power BI reports queried by 200 users during business hours, (b) 15 scheduled dataset refreshes (average 4 minutes each), (c) 3 paginated report definitions rendering ~500 pages/day, and (d) a planned Spark-based Lakehouse running 2-hour ETL jobs nightly. Each category consumes CU-seconds at different rates.
    Four workload categories identified: interactive BI, scheduled refresh, paginated reports, Spark ETL.
  2. 2

    Step 2 — Estimate Peak Interactive Load

    Microsoft's Capacity Metrics documentation indicates that a typical DAX query on a moderately complex model consumes ~0.5 CU-seconds. With 200 users generating an average of 3 queries per minute during the 9:00–10:00 AM peak, the demand is 200 × 3 × 0.5 = 300 CU-seconds per minute. Converting to a per-second rate: 300 / 60 = 5 CU/s sustained.
    Peak interactive demand ≈ 5 CU/s sustained
  3. 3

    Step 3 — Estimate Refresh Load

    Dataset refreshes are background operations. Fifteen refreshes of 4 minutes each at ~8 CU/s during refresh yields 15 × 240 × 8 = 28,800 CU-seconds total per day. If refreshes are staggered across a 2-hour window, the average background draw is 28,800 / 7,200 = 4 CU/s. If they overlap more aggressively, peak background load rises.
    Average refresh demand ≈ 4 CU/s over the refresh window
  4. 4

    Step 4 — Add Headroom and Select SKU

    Combining interactive (5 CU/s) + refresh (4 CU/s) + paginated (~1 CU/s) + Lakehouse ETL at night (~16 CU/s but off-peak), the daytime peak is roughly 10 CU/s sustained. Applying a 1.5× headroom factor gives 15 CU/s. The nearest Fabric SKU providing at least 15 CU is F16 (16 CUs). However, the nightly Lakehouse job demands 16 CU/s by itself, and it will overlap with late-night refreshes. To accommodate both comfortably, the team should consider an F32 with autoscale enabled, or an F64 if budget permits and the team expects 2× growth in the next year.
    Recommended SKU: F32 with autoscale, or F64 for growth headroom
  5. 5

    Step 5 — Validate with Capacity Metrics App

    After provisioning, the team should deploy the Microsoft Fabric Capacity Metrics App to monitor actual CU utilization over 2–4 weeks. If U consistently stays below 0.5, the team may downscale. If U regularly exceeds 0.8, upscaling or workload scheduling adjustments are warranted. This iterative approach mirrors the observe-orient-decide-act (OODA) loop used in capacity planning for any distributed system.
    Ongoing monitoring ensures right-sizing and cost optimization.

SECTION 7

Strengths, Limitations & Trade-offs

AspectShared Capacity (Pro)Premium / Fabric Capacity
Cost ModelPer-user license (~$10/user/month). Low entry cost for small teams.Per-capacity node (starts ~$260/month for F2; ~$5,000/month for F64). Amortized cost per user decreases as user count rises.
Performance IsolationNone. Subject to noisy-neighbor effects.Full isolation. Dedicated v-cores guarantee throughput SLA.
Dataset Size Limit1 GB per dataset.Up to 400 GB per dataset (Large Dataset Storage Format).
Paginated ReportsNot available.Fully supported. Renders server-side; ideal for operational/regulatory reports.
API / XMLA AccessRead-only XMLA via shared endpoint.Read/write XMLA, enabling ALM tooling (Tabular Editor, CI/CD pipelines).
GovernanceBasic workspace-level permissions.Deployment pipelines, managed private endpoints, customer-managed encryption keys.
Operational OverheadMinimal—Microsoft manages all infrastructure.Requires capacity admin role, monitoring, right-sizing, and autoscale configuration.

Shared vs. Premium/Fabric Capacity comparison

✦

KEY TAKEAWAY

Premium/Fabric capacity is not universally superior to shared capacity—it introduces operational complexity and higher baseline cost. The decision to adopt it is analogous to the buy-vs-rent compute trade-off in cloud architecture: for a 5-person team running lightweight dashboards, shared Pro licenses are perfectly adequate. But once you need paginated reports, large datasets, XMLA tooling, or cross-workload unification, the capacity model becomes essential. The break-even point typically occurs around 500+ report consumers, where the per-capacity cost divided by users drops below the per-user Pro license cost.

SECTION 8

Connection to Advanced Theory — Fabric as a Unified Platform

Power BI Premium was originally conceived as a BI-centric capacity layer, but Microsoft's strategic direction with Microsoft Fabric is far more ambitious. Fabric unifies six previously independent Azure services—Power BI, Azure Synapse Analytics (SQL and Spark), Azure Data Factory, Azure Data Explorer, and real-time analytics—into a single SaaS platform backed by OneLake, a unified data lake that stores all artifacts in Delta Parquet format. From a CS perspective, this is a convergence of the traditional data-warehouse architecture and the data-lakehouse paradigm into a single governed runtime.

DimensionPower BI Premium (Legacy)Microsoft Fabric Capacity
Workload TypesBI only: datasets, reports, paginated reports, dataflows.BI + Data Engineering (Spark) + Data Warehouse (SQL) + Data Factory (pipelines) + Real-Time Analytics (KQL) + Data Science (ML models).
Storage LayerProprietary VertiPaq compressed storage per dataset.OneLake (ADLS Gen2 under the hood) with open Delta Parquet format. One copy of data, multiple query engines.
Billing Unitv-cores (P1 = 8 v-cores).Capacity Units (F64 = 64 CU ≈ P1). CUs are universal across all workload types.
Pause / ResumeNot supported (always-on).Supported. Capacity can be paused to stop billing during off-hours.
GovernanceWorkspace-level security, sensitivity labels.All Premium governance plus domain-level organization, Purview integration, and cross-workload lineage.

Power BI Premium vs. Microsoft Fabric Capacity — key architectural differences

Looking ahead, Microsoft has indicated that P SKUs will eventually be retired in favor of F SKUs, making Fabric the sole capacity model. For students entering the workforce, fluency with the Fabric capacity paradigm is increasingly important because it represents a convergence of the modern data stack—ingestion, transformation, warehousing, analytics, and machine learning—under a single governance and billing boundary. This mirrors broader trends in platform engineering where organizations seek to reduce operational complexity by consolidating on integrated platforms rather than stitching together point solutions.

ℹ

Looking Forward

Advanced topics that build on capacity concepts include: multi-geo deployments (placing capacity in specific Azure regions for data residency), managed private endpoints (network isolation via Azure Private Link), and capacity reservation pricing (1-year or 3-year commitments for up to 40% cost savings, analogous to Azure Reserved Instances).

SECTION 9

Practice Problems

Question 1: CONCEPTUAL

Explain why a shared-capacity architecture can suffer from the 'noisy neighbor' problem. How does dedicating a capacity to a single tenant mitigate this, and what trade-off does the tenant accept in return?
Show answer
In shared capacity, compute resources (CPU, memory) are pooled across multiple tenants. When one tenant triggers a resource-intensive operation—such as a large dataset refresh—it consumes cycles that would otherwise be available to other tenants, degrading their query latency. This is the noisy-neighbor problem, directly analogous to process contention on a shared CPU without proper resource cgroups. Dedicating a capacity eliminates cross-tenant contention by provisioning isolated v-cores. The trade-off is cost: the tenant must pay for reserved compute regardless of whether it is fully utilized, which increases the baseline expense compared to a pay-per-user model. Additionally, the tenant takes on operational responsibility for monitoring and right-sizing the capacity.

Question 2: BASIC CALCULATION

An F64 Fabric capacity has 64 CUs. If the smoothing evaluation window is 30 seconds, what is the total CU-second budget per window? If a peak of 100 concurrent DAX queries each consuming 0.8 CU-seconds arrives in a single second, does this exceed the window budget?
Show answer
The CU budget per window is SKU_CUs × Window_seconds = 64 × 30 = 1,920 CU-seconds. The 100 concurrent queries consume 100 × 0.8 = 80 CU-seconds in that single second. Over the full 30-second window, the remaining 29 seconds would need to stay within 1,920 − 80 = 1,840 CU-seconds for the capacity to remain un-throttled. The single-second spike of 80 CU-seconds corresponds to an instantaneous rate of 80 CU/s, which exceeds the average rate of 64 CU/s, but the burst is absorbed by the smoothing algorithm because the total window budget is far from exhausted. As long as the average rate over 30 seconds stays at or below 64 CU/s, throttling will not occur.

Question 3: INTERMEDIATE

A company has 800 report consumers on Pro licenses at $10/user/month (total $8,000/month). They are considering moving to an F64 Fabric capacity at $4,995/month, but they would still need Pro or Fabric Free licenses for each consumer to view content in the capacity workspace. With Fabric, viewers of capacity-hosted content need only a free Microsoft Entra account (no Pro license). Analyze the monthly cost comparison and identify the break-even number of users that justifies the F64.
Show answer
Under the current model, 800 Pro licenses cost 800 × $10 = $8,000/month. With Fabric capacity (F64 or higher), users who only consume (view) content hosted on the capacity do not require Pro licenses—they can use free Entra accounts. However, content creators still need Pro or PPU licenses. Assuming 50 creators retain Pro ($500/month) and 750 consumers switch to free, the new cost is $4,995 (F64) + $500 (50 Pro) = $5,495/month, saving $2,505/month. The break-even calculation for the capacity alone (ignoring creator licenses) is $4,995 / $10 ≈ 500 users. Once viewer count exceeds ~500, the capacity model is cheaper per month, and the organization additionally gains Premium features like paginated reports, larger datasets, and XMLA access. With 800 users, the savings are clear.

Question 4: APPLIED

You are designing a Fabric deployment for a healthcare analytics platform. Requirements include: (1) 50 GB patient dataset with PHI that must remain in a specific Azure region, (2) nightly ETL pipeline loading data from on-premises SQL Server, (3) paginated reports for regulatory compliance distributed via email subscriptions, and (4) interactive dashboards accessed by 300 clinicians during daytime hours. Describe which Fabric workloads and capacity features you would leverage, and justify your SKU selection.
Show answer
The 50 GB dataset with PHI mandates a capacity in a specific Azure region, achieved via the multi-geo feature of Fabric capacities. The nightly ETL pipeline maps to a Data Factory pipeline workload within Fabric, replacing the need for a standalone Azure Data Factory instance. The 50 GB dataset exceeds the shared-capacity 1 GB limit, requiring at minimum F64 (which supports up to 400 GB). Paginated reports for regulatory compliance are a capacity-gated feature and will leverage Fabric's server-side rendering with email subscriptions configured through Power BI subscriptions. Interactive dashboards for 300 clinicians at a conservative 2 queries/min × 0.5 CU-seconds/query yields ~5 CU/s peak interactive demand. Adding ETL (~10 CU/s but off-peak), paginated rendering (~2 CU/s), and refresh (~4 CU/s), the combined peak is ~11 CU/s daytime and ~14 CU/s overnight. An F32 (32 CU) with autoscale would suffice, but given healthcare's strict SLA requirements and PHI sensitivity, an F64 provides comfortable headroom and supports managed private endpoints for secure connectivity to the on-premises SQL Server via an on-premises data gateway.

Question 5: CRITICAL THINKING

Microsoft Fabric unifies six previously separate Azure services under a single capacity billing model. From a distributed-systems perspective, discuss the architectural advantages and risks of this consolidation. Consider aspects such as failure domains, resource contention across heterogeneous workloads, vendor lock-in, and the open-format (Delta Parquet) storage strategy as a mitigating factor.
Show answer
Consolidation under a single capacity offers several architectural advantages: unified governance reduces the attack surface and simplifies access control; a single billing meter eliminates the complexity of reconciling costs across six services; and OneLake's shared storage eliminates data duplication, reducing storage costs and consistency issues. However, consolidation expands the failure domain—a capacity-level outage now impacts not just BI but also data engineering, warehousing, and real-time analytics simultaneously, whereas independent services would fail independently. Resource contention across heterogeneous workloads (e.g., a long-running Spark job starving interactive DAX queries) is managed by the CU smoothing algorithm, but the algorithm's fairness guarantees are less transparent than having dedicated compute per service. Vendor lock-in is a legitimate concern: by hosting all workloads in Fabric, an organization becomes deeply dependent on Microsoft's platform. The mitigation here is Fabric's use of open Delta Parquet format in OneLake, which means the underlying data can be read by any engine that supports Delta Lake (Databricks, open-source Spark, Trino). This provides a data-layer exit strategy even if the compute layer is proprietary. A mature architecture would treat Fabric as the primary compute platform while maintaining data portability via the open storage format, periodically validating that the data remains accessible outside Fabric as a hedge against lock-in.

SUMMARY

Lesson Summary

Summary

Power BI Premium and Microsoft Fabric capacity provide dedicated compute reservations that eliminate the noisy-neighbor problem inherent in shared capacity. A capacity is defined by its SKU tier (F2 through F2048 in Fabric, or legacy P1–P5), which determines the number of capacity units (CUs) available. Operations consume CU-seconds, and the smoothing algorithm permits short bursts above the nominal rate while throttling sustained overuse—a mechanism analogous to a token-bucket rate limiter.

Capacity-gated features include paginated reports, XMLA read/write endpoints, deployment pipelines, and large datasets up to 400 GB. Microsoft Fabric extends the capacity concept to encompass lakehouse, warehouse, data pipeline, and real-time analytics workloads under a single unified billing and governance model, backed by OneLake storage in open Delta Parquet format. Sizing involves estimating CU demand per workload, applying headroom, selecting the appropriate F SKU, and iterating based on real utilization data from the Capacity Metrics App.

Varsity Tutors • Microsoft Power BI • Premium/Fabric Capacity