Табличная модель SSAS - создание роли с использованием DAX Lookupvalue для поиска нескольких столбцов - PullRequest
0 голосов
/ 24 января 2020

Я только начинаю использовать DAX и табличное моделирование, поэтому буду признателен за любую возможную помощь / совет.

Я создал свою первую модель и хочу создать динамические c роли безопасности. Я добился этого в простом масштабе, если я хочу сравнить созданную мной таблицу безопасности с моей отфильтрованной таблицей, он проверяет соответствие столбцов и возвращает результаты только для тех столбцов, которые совпадают.

Например: моя таблица безопасности называется ReportAccessPermissions. В этой таблице в настоящее время хранится логин домена, emp id, регион продаж, другая информация о лидере, связанная с этим сотрудником. Это выглядит примерно так:

ID   Domain     Mgr1ID  Mgr2ID  MGr3ID  SalesRegion
1234 TEST\user1 2222    NULL    NULL    NULL    
1234 TEST\user1 NULL    5555    NULL    NULL    
1234 TEST\user1 NULL    NULL    NULL    APJ     
1234 TEST\user1 NULL    NULL    NULL    EMEA  

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

='EMPLOYEE'[SalesRegion]= LOOKUPVALUE ('ReportAccessPermmisions'[SalesRegion],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[SalesRegion],'EMPLOYEE'[SalesRegion])

Однако я хотел бы иметь возможность фильтровать информацию о лидере. Так что я могу сравнить данные о регионе продаж и о лидере с таблицей emp. Возможно ли сделать это с помощью одного запроса DAX? Или мне нужно создать отдельные роли для каждой проверки столбца?

В идеале, я бы предпочел не создавать много ролей безопасности для модели, потому что я представляю, что обслуживание будет возмутительным, так как создается больше моделей, добавляются пользователи и применяются фильтры. Я надеюсь, что можно создать одну роль, но он должен проверить разные столбцы в этой таблице безопасности, чтобы только потом возвращать те же результаты в таблицу emp.

Спасибо, P

1 Ответ

1 голос
/ 25 января 2020

Попробуйте следующий шаблон:

=OR(
 'EMPLOYEE'[SalesRegion]= LOOKUPVALUE ('ReportAccessPermmisions'[SalesRegion],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[SalesRegion],'EMPLOYEE'[SalesRegion]),
 'EMPLOYEE'[Mgr1ID]= LOOKUPVALUE ('ReportAccessPermmisions'[Mgr1ID],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[Mgr1ID],'EMPLOYEE'[Mgr1ID])
)
...