Microsoft Fabric: Capacity Options and Cost Management, Part 1; The Basics

Microsoft Fabric: Capacity Options and Cost Management, Part 1

Microsoft Fabric is a SaaS platform that allows users to get, create, share, and visualise data using a wide set of tools. It provides a unified solution for all our data and analytics workloads, from data ingestion and transformation to data engineering, data science, data warehouse, real-time analytics, and data visualisation. In a previous blog post, I explained the basics of the Microsoft Fabric data platform. In a separate blog post, I explained some Microsoft Fabric terminologies and personas where I explained what Tenant and Capacities are.

In this blog post, we will explore the different types of Fabric capacities, how they affect the performance and cost of our Fabric projects, and how you can control the capacity costs by pausing the capacity in Azure when it is not in use.

Fabric capacity types

Fabric capacities are the compute resources that power all the experiences in Fabric. They are available in different sizes and prices, depending on our needs and budget. We can currently obtain Fabric capacities in one of the following options:

If we want to purchase Microsoft Fabric capacities on Azure, they come in SKUs (Stock Keeping Units) sized from F2 – F2048, representing 2 – 2048 CU (Capacity Units). A CU is a unit of measure representing the resource power available for a Fabric capacity. The higher the CU, the more resources we get on our Fabric projects. For example, an F8 capacity has 8 CUs, which means it is four times more powerful than an F2 capacity, which has 2 CUs.

When purchasing Azure SKUs with a pay-as-you-go subscription, we are billed for compute power (which is the size of the capacity we choose) and for OneLake storage, which is charged for the data stored in OneLake per gigabyte per month (approximately $0.043 (New Zealand Dollar) per GB). OneLake is the unified storage layer for all the Fabric workloads. It allows users to store and access our data in a secure, scalable and cost-effective way.

Azure Fabric capacities are priced uniquely across regions. The pay-as-you-go pricing for a Fabric capacity at Australia East region is $0.3605 (NZD) per CU per hour, which translates to a monthly price of $526.217 (NZD) for an F2 ($0.3605 * 2 * 730 hours).

Microsoft Fabric pricing overview

It is important to note that billing is per second with a one-minute minimum. Therefore, we will be billed for when the capacity is not in use. Here is a full list of prices available at the Azure portal by selecting our Fabric capacity region.

Now that we have an indication of the costs of owning Microsoft Fabric capacities let’s explore the methods to control the cost.

Nuances of Fabric’s Cost of Ownership

It is important to note that all the math we have gone through in the previous section is just about the capacity itself. But are there any other costs that may apply? The answer is it depends. If we obtain any SKUs lower than F64, we must buy Power BI Pro licenses per user on top of the capacity costs. For the tiers above F64, we get unlimited free users but, BUT, we still have to purchase Power BI Pro licenses for all developers on top of the cost of the capacity itself.

Another gotcha is that the Fabric experiences are unavailable to either Power BI Premium (PPU) users or the Power BI Embedded capacities. Just be mindful of that.

The good news for organisations owning Power BI Premium capacities is that you do not need to do anything to leverage Fabric capabilities. As a matter of fact, you already own a Fabric capacity, you just need to enable it on your tenant.

Methods to control the capacity costs on Azure SKUs

One of the benefits of using Fabric capacities purchased on Azure SKUs is that we have some control over our capacity costs. We can use various methods to optimise the capacity usage and reduce the expenses. Here are some of the methods we can use:

  • Scale up or down our capacity size: We can change the size of our Fabric capacity at any time from the Azure portal. This allows organisations to adjust the horsepower according to the required workload. For example, if we have a large data engineering project that requires more processing power, we can scale up our capacity size temporarily and then scale it down when we are done.
  • Pause and resume the capacity: We can pause and resume the Fabric capacity from the Azure portal at any time. Pausing the capacity drops the compute costs, but we still pay for the OneLake storage used, which is not much of a big deal. Resuming the capacity starts the counter again (on a per-second basis for at least one minute). This saves us money when the capacity is not in use, such as during nights or weekends.
  • Monitor the capacity utilisation: We can monitor our Fabric capacity utilisation from the Microsoft Fabric Capacity Metrics app. This app provides various reports showing how different workloads and users are using a selected capacity. It also shows how much compute charge is incurred by each workload type, such as Warehouse Query, SQL Endpoint Query and OneLake Compute. This helps you identify any inefficiencies or bottlenecks in our capacity usage and take corrective actions. I have an entire blog on my backlog explaining how to set it up and use it, so stay tuned for that.

Now that we know some ways to control Micsoroft Fabric capacity costs (on Azure SKUs only), let’s see how each of them works.

Scale up or down capacity size on Azure Portal

Follow these steps to scale up or down the Microsoft Fabric capacity size on Azure Portal:

  1. Log in to the Azure Portal
  2. On the Serch bar, type in fabric
  3. Click the Resources filter to show the results for the existing resources
  4. Click the desired Fabric capacity

The following image shows the preceding steps:

Finding existing Fabric Capacity on Azure Portal
  1. Click the Change size option under the Scale section
  2. Select the desired SKU
  3. Click the Resize button

The following image shows the above steps:

Resizing Fabric capacities on Azure Portal

Scaling up or down the Fabric capacity can help with performance and cost optimisations. We should monitor the capacity metrics and decide whether scaling would be beneficial. If it is, then adjust the scaling settings accordingly.

Pause and resume the capacity on Azure Portal

One of the most effective methods to control our Fabric capacity costs is to pause the capacity in Azure when it is not in use. This can significantly reduce our bill, especially when we have large or multiple capacities not utilised 24/7.

Pausing or resuming the Fabric capacity in Azure is pretty simple. After navigating to the Fabric capacity on Azure Portal, click the Pause button to pause the capacity, then click Yes, as shown in the following image:

Pause Fabric capacity on Azure Portal

To resume an already paused capacity, click the Resume button, then click Yes, as the following image shows:

Resume Fabric capacity on Azure Portal

Note: Pausing or resuming a Fabric capacity may take a few minutes to complete.

When we pause the Fabric capacity, all the workspaces and items that are assigned to it will become inaccessible until we resume the capacity. Conversely, resuming the Fabric capacity makes all the workspaces and items assigned to it becoming accessible again.

With all that, you may now have some questions, such as:

  • What if we FORGET to Pause and Resume the capacity? Well, in that case, we do not save at all.
  • Is there a way to automate the Pause/Resume process? The answer is yes. That is exactly what we will find out in the next blog post. So, stay tuned for that.
  • Is autoscaling available for Fabric capacities? Not yet, as far as I know.

Conclusion

In this blog post, we have learned about the different types of Fabric capacities, how they affect the performance and cost of our Fabric projects, and how you can control the capacity costs by pausing the capacity in Azure when it is not in use. I hope this post has helped you understand how to optimise the Fabric capacity usage and save money on our bills. As mentioned earlier, in the next blog post, we will learn how to automate the Pause/Resume process.

So stay tuned.