Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
teodorajuduc
Regular Visitor

Performance Issues when to many RLSs are defined

Hi Everyone,

 

I am debating with the client to create RLS for each program portfolio and they do not know yet how many portfolios they will be having in a long run. I know that Microsoft says that too many RLS defined can lead to performance issues, but I cannot find anywhere what "too many" really is. I think that the client should not have more than 50 portfolios.

 

Does anyone know how many RLS defined is too many? What are the performance issues?

 

Thanks in advance,

Teodora

1 ACCEPTED SOLUTION
v-janeyg-msft
Community Support
Community Support

Hi, @teodorajuduc 

 

If your RLS is too complicated and affects more dax functions, then performance may be affected. It also depends on the performance of your data model. If only 50 users, it should be no problem.You can access as a user, it doesn’t matter if it’s not slow. 

But in the dashboard tile refresh, it will be affected. You can refer to the content of the document:

By default, Power BI maintains a single cache for every tile, but if you use dynamic security to restrict data access based on user roles, then Power BI must maintain a cache for every role and every tile. The number of tile caches multiplies by the number of roles.

If it doesn’t solve your problem, please feel free to ask me.

 

Best Regards

Janey Guo

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

9 REPLIES 9
v-janeyg-msft
Community Support
Community Support

Hi, @teodorajuduc 

 

If your RLS is too complicated and affects more dax functions, then performance may be affected. It also depends on the performance of your data model. If only 50 users, it should be no problem.You can access as a user, it doesn’t matter if it’s not slow. 

But in the dashboard tile refresh, it will be affected. You can refer to the content of the document:

By default, Power BI maintains a single cache for every tile, but if you use dynamic security to restrict data access based on user roles, then Power BI must maintain a cache for every role and every tile. The number of tile caches multiplies by the number of roles.

If it doesn’t solve your problem, please feel free to ask me.

 

Best Regards

Janey Guo

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Thanks for your answer. The RLS are simple DAX filters on a single column. I will keep your advice in mind and try to test the performance by creating a few RLS and check the behaviour.

lbendlin
Super User
Super User

what are the rules behind these roles? simple filters on a single column, or very complex DAX expressions?

 

If your client doesn't know the eventual size of the list then you may want to consider outsourcing the RLS computations to a reference table that you then incorporate into your data model as a top level dimension. That will allow you to drastically reduce the number of Roles required.

@lbendlin 

I know this comment is a few years old but I hope you see this.  

How would I reference a table that has RLS applied to it?  I have a model with 25 dimensions and if I put RLS on all of them it fails.  However, this idea seems like a great one I just can't get it to work.  I created a dimension that is joined to the RLS table.  I then referenced that table to join to my fact table.  Problem is my dimension isn't being filtered by the RLS...

DonBot_0-1716581302708.png

 



Here's the preference of RLS implementation

 

Best:  No RLS.  Do you really, really need it? Is your data very sensitive?

Good: Dynamic RLS, with rules outsourced to reference dimension table that controls the protectables.

Not so good: Static RLS with rules defined in the semantic model.  Too much maintenance effort.

@lbendlin  Do you have any examples of the Good scenario above?  I've tried googling for it but I'm not sure if I'm finding the relevant articles.

Thanks @lbendlin been through that which works great for a simple model.  Not so much for a model with 20 dimensions and a fact where the main RLS table can't be joined to the other dimensions due to "ambiguity" errors.  

These are basic rules, a filter on a single column.

The scenario is more like: a user is part of 1 or mutiple portfolios and when he logs in he should see only the entities which are part of his portfolio. The client already has configured CWS groups which works more or less like AAD groups. By having a RLS for each portfolio we can assign a CWS group to each role. Is there any other way to implement this scenario?

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors