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

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
Phil_PowerBI
Frequent Visitor

Dynamic row-level security

I have successfully created a role in Power BI to control access to the content of my report using the DAX script below:

 

SWITCH(

       TRUE(),

       [SecuredAccessType] = "Full Access", 1=1,

       [SecuredAccessType] = "Standard Access", 1=1,

       [SecuredAccessType] = "Limited Access" && [SecuredOfficeGroupAccessType] = "See Data of All Office Groups", 1=1,

       [SecuredAccessType] = "Limited Access" && [SecuredOfficeGroupAccessType] <> "See Data of All Office Groups", DimOriginatingOffice[Office Group] = [SecuredOfficeGroup],

       1=1

       )

 

I have now been told that under some conditions, it would be great if they can turn the role on and off. I have created slicer with two values to handle this – Secured and Unsecured.I also created a Measure to capture the selected value of the slicer as shown below:

 SecuredMode = SELECTEDVALUE('Report Mode'[ReportMode])

 

I then simply wrapped a simple IF statement around my DAX to handle this as shown below:

 

IF ([SecuredMode] = "Secured",

SWITCH(

       TRUE(),

       [SecuredAccessType] = "Full Access", 1=1,

       [SecuredAccessType] = "Standard Access", 1=1,

       [SecuredAccessType] = "Limited Access" && [SecuredOfficeGroupAccessType] = "See Data of All Office Groups", 1=1,

       [SecuredAccessType] = "Limited Access" && [SecuredOfficeGroupAccessType] <> "See Data of All Office Groups", DimOriginatingOffice[Office Group] = [SecuredOfficeGroup]

             ), 1=1)

 

 To my surprise, it appears that my slicer selection does not get recognised as no matter how many times I change the selection, my role expression always resolve to the default value of my IF statement.

 

 

Is this a limitation in POWER BI or am I doing something wrong?

1 REPLY 1
d_gosbell
Super User
Super User


@Phil_PowerBI wrote:

 

 To my surprise, it appears that my slicer selection does not get recognised as no matter how many times I change the selection, my role expression always resolve to the default value of my IF statement.

 


This is by design. Effectively the security role is assigned and the permissions are evaluated when the user first connects. This happens before any queries are run or any slicers are evaluated. You cannot make security an optional thing that users can switch on or off themselves, the security is always processed first so that there is no way the user can bypass it. 

 

The only way to do what you want would be to put the users in the role with the most permissions and then put the switch logic in your measures.

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.