Использование RLS на дополнительном поле для UserPrincipalName - PullRequest
1 голос
/ 10 июня 2019

Итак, если у меня есть три пользователя: Том, Дик и Гарри, и им назначены групповые цвета. Я бы хотел, чтобы они могли видеть данные каждого в своей группе.

Name    Group   Email
-----   -----   -----
Tom     Green   t@acme.com
Dick    Red     d@acme.com
Harry   Red     h@acme.com

Итак, я создаю меру

RLS_SecurityKey = CALCULATE(FIRSTNONBLANK(People[Group],People[Group]),     
    USERPRINCIPALNAME() = People[Email])

И когда я вхожу в систему как отдельные пользователи, я вижу в визуальной карте, что получаю ожидаемую группу.

Но когда я устанавливаю безопасность на уровне строк в таблице People, [Group] = [RLS_SecurityKey], я получаю только одну строку, соответствующую адресу электронной почты, а не пользователя, который соответствует его группе.

Кажется, я что-то упускаю из виду, но не вижу этого. Как я могу получить обратно все строки, относящиеся к группе, а не к электронной почте?

1 Ответ

1 голос
/ 10 июня 2019

Да, это было довольно просто.

RLS_SecurityKey = CALCULATE(FIRSTNONBLANK(People[Group],People[Group]),     
    FILTER(ALL('PEOPLE'),USERPRINCIPALNAME() = People[Email]))

Я настроил выражение фильтра и сделал его правильным фильтром по всей таблице.

...