![Page 1: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/1.jpg)
This is a HeaderTHIS IS A SUBTITLE
Power BI Row Level SecurityDevin Knight
@knight_devin
![Page 2: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/2.jpg)
This is a HeaderTHIS IS A SUBTITLE
About Devin
Assuming this goes well.
Popup books about maintaining a healthy relationship with yourminiature donkeys.
And supporting cult being investigated by the government.
A collection of internet cat pictures
President, Pragmatic Works Training
Microsoft Data Platform MVP
Author of 7 books
Contributor JAX PUG
Blogs at DevinKnightSQL.com
Twitter: @knight_devin
![Page 3: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/3.jpg)
This is a HeaderTHIS IS A SUBTITLE
Agenda
What is Row Level Security
Setting up Basic Row Level Security
Making Security Dynamic
![Page 4: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/4.jpg)
This is a HeaderTHIS IS A SUBTITLE
What does it do?Gives the ability to restrict specific rows of data from being viewed by your report users
What is it not?Not the same as Report, Dashboard, Workspace or Power BI App sharing
What is Power BIRow Level Security?
![Page 5: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/5.jpg)
This is a HeaderTHIS IS A SUBTITLE
Create RoleIn the Power BI Desktop define what the Role can do.
How Does it Work?
Assign Users or GroupsIn the Power BI Service assign Users to the Role you created.
![Page 6: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/6.jpg)
This is a HeaderTHIS IS A SUBTITLE
Basic Row Level Security
Configuration Setup a hard-coded role definition
Downside
![Page 7: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/7.jpg)
This is a HeaderTHIS IS A SUBTITLE
Basic Row Level Security Setup
Demo
![Page 8: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/8.jpg)
This is a HeaderTHIS IS A SUBTITLE
Problem with Basic Row Level Security
Issues to deal with Requires a new role for every different security scenario
Could require continuous maintenance
![Page 9: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/9.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level SecurityHow it Works
Captures the user logged into the Power BI Report
Checks permissions against a table in the data model
Matches the user’s login to acceptable rows based on relationships in the data model
DAXUserPrincipalName()
UserName()
![Page 10: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/10.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security Setup
Demo
![Page 11: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/11.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security (Many to Many)
UserID StateID
1 1
1 3
2 3
2 4
3 2
UserStateBridge
UserID Name Email
1 Devin dknight@pragmatic...
2 Mitchell mpearson@pragma...
3 Manuel mquintanta@prag...
User
StateID Name
1 Florida
2 California
3 Georgia
4 South Carolina
State
StateID ProductID Amount
1 346 $2566
2 856 $6723
4 489 $822
4 849 $2262
Sales
![Page 12: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/12.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security Setup
With Many to Many
Demo
![Page 13: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/13.jpg)
This is a HeaderTHIS IS A SUBTITLE
Why didn’t this work
Security Applied here:UserName = UserPrincipalName()
Filter only applies here
![Page 14: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/14.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security Setup
With Many to Many… Continued
Demo
![Page 15: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/15.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security with DAX
Why you should consider this way Applying ‘Both’ to Cross Filter Direction can hurt performance
DAX MethodFilter the Hospital table to only return values associated with the user logged in
FILTER
LOOKUPVALUE
![Page 16: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/16.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security Setup
With DAX
Demo
![Page 17: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/17.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dynamic Row Level Security with Parent Child Hierarchy
How to solve Flatten hierarchy with PATH function
DAXPATH and OR operator (||) for each flattened level of the hierarchy
UserID Name UserName ManagerID
1 Devin Knight [email protected]
2 Manuel Quintana [email protected] 1
3 Mitchell Pearson [email protected] 2
4 Daniel Straitiff [email protected] 2
5 Erin Ostrowsky [email protected] 3
![Page 18: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/18.jpg)
This is a HeaderTHIS IS A SUBTITLE
Dealing with Self Referencing Tables
Demo
![Page 19: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/19.jpg)
This is a HeaderTHIS IS A SUBTITLE
• What happens when I republish?
Commonly asked Questions
![Page 20: This is a Header Power BI Row Level Security BI Row Level Security.… · Dynamic Row Level Security with DAX Why you should consider this way Applying ‘oth’ to ross Filter Direction](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fb755af1e333a34722962c6/html5/thumbnails/20.jpg)
This is a HeaderTHIS IS A SUBTITLE
Have Any Questions?
Email: [email protected]
Twitter: @knight_devin