Forum Discussion
RLS Question with Group
- 5 years ago
Anonymous
var _admin=DISTINCT('Admin'[Email])Getting the list of admin emails and assign it to _admin variable
var _x = CALCULATETABLE(Division,Division[Email]=USERPRINCIPALNAME())Filtering the Division table based on login user and assign that into _x variable
var _office = SELECTCOLUMNS(_x,"Office",[Sales Office])Creating a new table called _office. It will contain a single column "Office" which is derived from _x table. ie login user's office.
var _group = SELECTCOLUMNS(_x,"Group",[Group])Creating a new table called _group. It will contain a single column "Group" which is derived from _x table. ie login user's group.
var _OfficeManagerRole = AND([Sales Office] IN _office,[Spending Group]<>100)Specifying a filter condition, Office Manager Role
var _ProdManagerRole = [Sales Office] IN _officeSpecifying a filter condition, Product Manager Role
var _finalFilter =SWITCH(TRUE(), USERPRINCIPALNAME() IN _admin, TRUE(), "Office Manager" IN _group, _OfficeManagerRole, "Prod Manager" IN _group, _ProdManagerRole) return _finalFilterDeciding the user role based on the login user.
Anonymous
Try below DAX in the Manage Roles window.
var _admin=DISTINCT('Admin'[Email])
var _x = CALCULATETABLE(Division,Division[Email]=USERPRINCIPALNAME())
var _office = SELECTCOLUMNS(_x,"Office",[Sales Office])
var _group = SELECTCOLUMNS(_x,"Group",[Group])
var _OfficeManagerRole = AND([Sales Office] IN _office,[Spending Group]<>100)
var _ProdManagerRole = [Sales Office] IN _office
var _finalFilter =SWITCH(TRUE(),
USERPRINCIPALNAME() IN _admin, TRUE(),
"Office Manager" IN _group, _OfficeManagerRole,
"Prod Manager" IN _group, _ProdManagerRole)
return _finalFilter
I have attached the PBIX file for your reference.
Your actual requirements might be different. Since the management users are missing in the table, I have created a calculated table as Admin. Please modify the logic based on your requirement.