The question I often get in my Power BI architecture consulting sessions is that; “How should we organize our workspaces? should we have one workspace with all the reports in it? or multiple? should we split it based on each report? business unit? or something else?” In this article and video, I’ll explain a guide of how to organize and setup workspaces in your organization.
What is a workspace in Power BI?
If you don’t know what the workspace is, read my article here explaining it. In a nutshell, a workspace is an environment to host and share Power BI content.
Consider a Power BI workspace as a single sharing unit
You can have multiple Power BI objects (dashboards, reports, datasets, dataflows, etc) inside a workspace, but when you share it, you share all of it. When I am speaking of sharing, I mean one of the workspaces sharing methods of course. By using Power BI apps, you can share a subset of the content, and using basic sharing, you can share an individual object. However, I don’t recommend using basic sharing for content in the workspace. and for the rest of this article, I do not consider that option for sharing the content of a workspace.
This means that the entire content in your workspace would be shared with someone who has an access role in your workspace (Administrator, Member, Contributor, or Viewer), and a subset of that to the Power BI app users.
You cannot share part of the content of a workspace with some users, and another part of it with other users. The Power BI workspace is one single sharing unit.
Separating audiences with multiple workspaces
Based on the above explanation, it is understandable that for a different group of audiences you will need a separate workspace. In the below screenshot, if you have two sets of reports which should be shared with two different audiences, you won’t get them all hosted in one workspace.
If you have two different sets of reports, for two different groups of audiences, then you need two different workspaces.
This means that if you have 12 groups of audiences for 12 sets of different reports, then you would require 12 workspaces.
Be careful not to count data row-level-access as a separate group of audience. For example, if you have one report, but the audiences of that report will see part of the data, then they are all considered as the same group of the audience, and the access for them is managed in one workspace using Row-level security.
Split the load, Use the capacity
Another important reason for having a separate workspace is to split the load. This is normally the case when you use a dedicated capacity plan (Power BI Premium or Embedded). If you have a report with a very high consumption rate, you might want to keep it separate from other reports with low rate of consumption and have it hosted in a separate workspace. Because for each workspace, you can choose what dedicated capacity it would be hosted on.
Shared workspaces among multiple user audiences
I’ve mentioned that one normal practice of having multiple workspaces is to have one per group of the user audience. This means for example, HR reports, in the HR workspace, and Sales reports in the Sales workspace. However, what if both of those reports are using a Date table? Then you need a date table to be accessible for both groups.
Having a shared workspace is an important part of a Power BI architecture. This technique will reduce the redundancy in the implementation, increases the consistency, and helps in the overall development process of the Power BI content.
I have explained the concept of dataflow in this article if you want to know more about it.
Layered of shared workspaces
The shared workspaces can have more than just dataflows, they can have datasets too. In fact, you can have layered of shared workspaces. For example, the Date table is something that probably all other workspaces are using, but something like the Account table might be only needed for a handful of workspaces in the organization.
Separating the Environments
Another good use-case for having multiple workspaces is to separate the environment. For a proper Power BI implementation (or any other software development implementations) you need to have a different environment for Development, Test and Production. This has tons of benefits in the development process and will bring the trust into the adoption, because the content in the production environment will be passing through multiple checks and validations.
The screenshot above is a screenshot of the deployment pipeline in Power BI Premium, which helps you to set up the deployment between the environments. However, even if you do not have the Premium license, you can still use the concept of DEV, TEST, and PROD environments, and use PowerShell scripts to handle the deployment between them.
Workspaces as development layers
Having the environments of DEV, TEST, and PROD are not the only workspace structure that helps the development of Power BI solutions. There are some other development practices that you can use by separating workspaces. One of them is what I explained in detail in this article.
In the above screenshot, there are multiple workspaces for staging dataflows, and transformations. In real-world scenarios, there can be more than these two layers depends on the complexity of the implementation.
How to organize workspaces in my organization?
To summarize, there are many important factors in the workspace structure. You would need to have separate workspaces based on the user audiences. It is better to have Dev, Test, and Prod layers through workspaces. You have to consider the usage of shared workspaces to reduce redundancy, and increase consistency. You can also split the load on the reports using multiple Power BI workspaces.
As you can see there is a lot to think about when you design the workspace structure. This is a design that would be different from organization to organization. In my architecture advisory gigs, I normally go through many of these processes. So I thought, it is better to explain some of them here so it helps you too. Please feel free to let me know in the comments below if you have any questions.