The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hi,
We have a requirement where we need to take 1000s of customers' data in a single dataset and embed it in a third-party application. We need to ensure customers only see their data and not any other customers' data.
I have gone through this official documentation (https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-multi-tenancy) and seems to be a promising solution. However, the only thing that is concerning is that it does not viable creating 1000s of workspaces for 1000s of customer in a single Power BI Tenant.
Is there a better way to achieve this?
Solved! Go to Solution.
Hi @Anonymous,
Sure. You do not have to create a workspace per customer.
It is usually convenient from a logical point of view. Especially if you plan to allow end-users to create reports/plan to use the Power BI Service for QA.
You can arrange the datasets and reports any way you like in any number of workspaces. Just note the limitation on the number of artifacts per workspace: Workspace Limitations
You will be the one who controls the access through the embedding application.
For example, you can create 1 workspace for all of your reports (up to 1000) & 1 workspace for all of your datasets (1 per customer, up to 1000).
Reports will be dynamically bound to different datasets as part of the embedding process.
If you'll have 1500 customers or 1500 reports- Just add a second or third workspace.
If you wish to reduce the development & management effort, and have no objection to combining different customers in the same DB- Consider using a single dataset with Row Level Security (RLS).
If implemented correctly, this will ensure customers only see their own data.
Note that this approach will have some performance impact and will increase the amount of resources needed for processing (subject to the implementation).
@Anonymous In case it answered your question please mark this as a solution for community visibility. Appreciate Your Kudos 🙂
Hi @Anonymous,
Sure. You do not have to create a workspace per customer.
It is usually convenient from a logical point of view. Especially if you plan to allow end-users to create reports/plan to use the Power BI Service for QA.
You can arrange the datasets and reports any way you like in any number of workspaces. Just note the limitation on the number of artifacts per workspace: Workspace Limitations
You will be the one who controls the access through the embedding application.
For example, you can create 1 workspace for all of your reports (up to 1000) & 1 workspace for all of your datasets (1 per customer, up to 1000).
Reports will be dynamically bound to different datasets as part of the embedding process.
If you'll have 1500 customers or 1500 reports- Just add a second or third workspace.
If you wish to reduce the development & management effort, and have no objection to combining different customers in the same DB- Consider using a single dataset with Row Level Security (RLS).
If implemented correctly, this will ensure customers only see their own data.
Note that this approach will have some performance impact and will increase the amount of resources needed for processing (subject to the implementation).
Hi @Anonymous,
This is not a limitation on the total number of workspaces in a Power BI Tenant.
A single service principal cannot be a member of more than 1000 workspaces (although I can tell you that, in practice, it works).
The recommended approach is to use service principal profiles. Have a look at: https://powerbi.microsoft.com/en-us/blog/announcing-general-availability-of-service-principal-profiles-in-power-bi-embedded/
Hi @SpartaBI ,
Thanks for your reply!
From the diagram I can see that Service Prinipcal Profile have a one-to-one mapping with Power BI workspaces. This means for my situation 1000s customer = 1000s workspaces which I want to avoid. Any other way around this?
User | Count |
---|---|
5 | |
5 | |
2 | |
2 | |
2 |
User | Count |
---|---|
10 | |
7 | |
4 | |
4 | |
4 |