Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreWe've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now
Hi all,
Unfortunately, I got a very ununsal requirement for Access Control
I have upload the demo power bi file for better explanation.
We get Sales table, region/ country mapping table and user access control table.
The key pain point: User access control by Region first, then by Country.
We cannot hard code the country for each user as many countries in each region and country code can change over the time (I only include a few in demo).
“All” mean user can view all country data for that region.
ie: Eric can view all DACH, NL data, but Sam can only view FRANCE in FRANCE/ BELGIUM.
| Name | Region | Country | |
| Eric | Eric@abc.com | DACH, NL | All |
| Peter | Peter@abc.com | DACH, NL | AUSTRIA |
| Boris | Boris@abc.com | DACH, NL | GERMANY |
| Peter | Peter@abc.com | FRANCE/BELGIUM | All |
| Sam | Sam@abc.com | FRANCE/BELGIUM | FRANCE |
| Henry | Henry@abc.com | UK | All |
| Peter | Peter@abc.com | UK | All |
How can I achieve 2 layers RLS with user email? I try to use the Organizational Hierarchy concept, but fail.
https://www.dropbox.com/s/7wopvrhs7jgti6g/Hierarchy%20RLS-demo.pbix?dl=0
Thanks.
Hi @Anonymous ,
I have created the role in your sample by the formula.
VAR Email = "Eric@abc.com"
VAR Region =
CALCULATETABLE (
VALUES ( 'User Right'[Region] ),
FILTER ( 'User Right', 'User Right'[Email] = Email )
)
VAR Country =
CALCULATETABLE (
VALUES ( 'User Right'[Country] ),
FILTER ( 'User Right', 'User Right'[Region] IN Region )
)
VAR k =
FILTER ( 'Region/County', 'Region/County'[Region] IN Region )
VAR n =
CALCULATETABLE (
VALUES ( 'Region/County'[Country] ),
FILTER ( 'Region/County', 'Region/County'[Country] IN Country ),
KEEPFILTERS ( k )
)
RETURN
[Country] IN n
You can change the email address to USERNAME function in your side.
BYW, pbix as attached.
Thanks for your reply.
Unfortunately, the problem is more complicated as my team would like to simplify the user control table and also apply All in Region.
Below is my new user control table (All in both Region & Country) and a new table to store all Regions values.
To make it easy, I create a extra step to match for mapping regions first, but I cannot modify the M code successfully (i cannot let All to expand all Regions in my Region table)
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.
| User | Count |
|---|---|
| 56 | |
| 39 | |
| 35 | |
| 19 | |
| 17 |
| User | Count |
|---|---|
| 73 | |
| 70 | |
| 37 | |
| 35 | |
| 26 |