top of page

Estimating semantic model size in Power BI and Fabric

In various discussions lately I have seen a lot of confusion on semantic model sizes.


Especially when we need to provision Fabric capacities that come with model size limits it is vital for us to understand what is meant by max memory and file size.


I will try to shed some light on this and offer a smart way to estimate the size of a semantic model.


I want to explain two concepts in this blog post:

1) The file size (.pbix or .pbip file + report and model folders)

2) The memory (RAM) limits we face in Fabric and Power BI Premium workspaces (see highlighted values below)


RAM / memory limits per semantic model in various Fabric capacities
RAM / memory limits per semantic model in various Fabric capacities

Main concepts explained


Section 1) The file size, and for the sake of keeping this simple let us take .pbix, is a compressed version of our data + some metadata.


If I create a new Power BI file and add some tiny data to it my model will be less than 1 MB probably. The size of the .pbix file also includes report metadata (report pages, visuals etc.) and metadata of our semantic model (descriptions, translations, table and column names etc.)


That is why it is possible that a small file might have a couple of MBs even though the data inside that file is just a few rows (especially if you imported custom visuals into your Power BI report).


Mainly the file size will be the compressed amount of your data however. However good the compression can work in your case.


Section 2) Now let us discuss the memory or RAM that our model consumes, this is also related to the amount of data but it works differently.


I can have a small file size (the .pbix is about 1-2 MBs) but it will consume hundreds of MBs in memory. Why? Because mainly the memory consumption needs to have all the data uncompressed. So if the compression works great my file size might be small but if I open the file in Power BI Desktop it will still consume a lot of RAM.


How do we know how much memory our model consumes?


The best way is to open Power BI Desktop and run the task manager -> search for the "Microsoft SQL Server Analysis Services" process as shown below.


SQL Server AS process is a good indicator of memory consumption
SQL Server AS process is a good indicator of memory consumption

In our case it is 483.3 MBs -> this is how much my model currently consumes in RAM

The file size of this report is only 0.5 MBs though

Power BI .pbix file size on the disk
Power BI .pbix file size on the disk

Most reports or semantic models will consume at least a few hundred MBs of memory.

This can grow to many GBs for larger models.


When I refresh my model, the engine will consume even more, so especially for import mode semantic models I will have to do a full refresh.


To estimate the total memory consumed during a full refresh, you can keep your task manager open and then hit the refresh button in Power BI Desktop which will show the SQL Server process consuming more and more RAM and then when the refresh is done the consumption will go down again, I have captured this in the short video below, the maximum number you will see during the refresh will be the minimum memory the model will need to refresh in the Power BI Service.


Demo how to estimate semantic model memory usage in Power BI Desktop


Clip showing memory consumption of a large model during a 25min full refresh
Clip showing memory consumption of a large model during a 25min full refresh

In the video above you can see that during the 25min refresh time in Power BI Desktop the consumed memory goes up from initially 3.1 GB all the way to 6.1 GB and then down again to 3.2GB


The 6.1GB is the important number because this is approximately how much your Fabric capacity will have to stem during a full refresh. Meaning you will need at least an F32 capacity (max. 10 GB model size) to refresh this semantic model in the Power BI Service.


Relevant use cases


The file size limit as explained in section 1) is mostly relevant if you operate in Pro workspaces, there, we have a limit of 1GB (file size limit, do not confuse with limit in section 2). If your model is over 1GB you will not be able to refresh it in a Pro workspace. If the semantic model is below 1GB and then it grows over time, the refresh will stop at some point when it hits the ~1GB.


Semantic model memory/RAM limit is more important and mostly relevant because it relates to the capacity size we need to provision.


If you are not sure what capacity your semantic model will need, go test it out in Power BI Desktop as shown above in the demo and then choose the relevant capacity.


For import mode models you will have to check the max. memory consumed during a full refresh.


For DirectQuery and DirectLake models it is a little harder but you can also check in Power BI Desktop and then interact with the report and play around with it a little bit and maybe add XX percent to get to a good estimate. It will also depend on your measures and visuals however.


If you are interested in an easy way to reduce the size of your semantic model (mainly in import mode) see my blog post here.


 
 
 

Comments


bottom of page