Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hello dear members.
I need your help.
I have 90 reports and 200 users, and I need to implement Row-Level Security (RLS) by country. This requires creating 20 different roles, one for each country.
Is there a way to implement this without having to configure it individually 90 times for each report? Alternatively, is there a way to manage this more efficiently, either in bulk or outside of Power BI? Dynamic RLS is not an option.
I’d appreciate any suggestions or best practices to streamline this process.
Thank you in advance!
Solved! Go to Solution.
Hi @Dimitris_Kats ,
Please check dynamic row level security for this. You need not create multiple roles.
First you need to create user configiration table which will have user name email address and which country they will have access to.
Then go to PBIX->Modelling->Create New Role - > DAX Editor
Here you can give DAX Filter data expression based on the fact table with country column. This DAX expression checks the userprincipal name of logged in user and check the country he has access to.
As a best practice, we just need to maintain this user access table with country and other dimensions/categorigal data he/she should be having access to.
Everytime a new user is added, this user will be added in the table, dataset needs to be refreshed and in the service, the user needs to be added in the security.
If this post helps, please accept this as a solution. Appreciate your kudos.
Thanks,
Pallavi
Hi @Dimitris_Kats,
I wanted to follow up since we haven't heard back from you regarding our last response. We hope your issue has been resolved.
If the community member's answer your query, please mark it as "Accept as Solution" and select "Yes" if it was helpful.
If you need any further assistance, feel free to reach out.
Please continue using Microsoft community forum.
Thank you,
Pavan.
Hi @Dimitris_Kats,
I wanted to follow up since we haven't heard back from you regarding our last response. We hope your issue has been resolved.
If the community member's answer your query, please mark it as "Accept as Solution" and select "Yes" if it was helpful.
If you need any further assistance, feel free to reach out.
Thank you,
Pavan.
Hi @Dimitris_Kats,
Thank for reaching out in Microsoft Community Forum.
I trust @pallavi_r response is accurate and will address your issue.
If you have any further questions or updates regarding your issue, feel free to ask, and we will look into that.
If the Super User's answer meets your requirements, please consider marking it as the "Accept as Solution" and click on "Yes"
Please continue using Microsoft community forum.
Regards,
Pavan.
Hi @Dimitris_Kats ,
Please check dynamic row level security for this. You need not create multiple roles.
First you need to create user configiration table which will have user name email address and which country they will have access to.
Then go to PBIX->Modelling->Create New Role - > DAX Editor
Here you can give DAX Filter data expression based on the fact table with country column. This DAX expression checks the userprincipal name of logged in user and check the country he has access to.
As a best practice, we just need to maintain this user access table with country and other dimensions/categorigal data he/she should be having access to.
Everytime a new user is added, this user will be added in the table, dataset needs to be refreshed and in the service, the user needs to be added in the security.
If this post helps, please accept this as a solution. Appreciate your kudos.
Thanks,
Pallavi
Hi. Thank you so much for your reply. I have already proposed DRLS and that's why I have mentioned in my message that DRLS is not an option. 🙂
Any other ideas?
Hi @Dimitris_Kats ,
Dynamic RLS is the recommended approach and best practice. No other alternatives I can think of. 🙂
If this post helps, please accept this as a solution. Appreciate your kudos.
Thanks,
Pallavi