Я использую табличный сервер SSAS 2017 и сервер отчетов Power BI для размещения отчетов Power BI. У меня система безопасности Dynami c Row Level работает без проблем. Однако это только часть требований для этой задачи.
Это таблица фактов, содержащая отдельные позиции, и таблица измерений под названием «Безопасность пользователей», которая содержит пользователей и менеджера, которому они отчитываются.
Мне нужно иметь возможность динамически проверять, кто должен быть в данный момент, чтобы найти фактор, чтобы выполнить математическую логику c. Есть два уровня пользователей, которые состоят из менеджера и затем обычных пользователей. Сложная часть состоит в том, что у менеджера есть отдельные позиции в таблице фактов, а также позиции, которые являются элементами их прямого отчета. Логика c выглядит следующим образом.
- Если текущий пользователь, просматривающий отчет, является обычным пользователем, то коэффициент равен 5.
- Если текущий пользователь, просматривающий отчет, имеет значение менеджер и позиции принадлежат им, тогда коэффициент равен 5
- Если текущий пользователь, просматривающий отчет, является менеджером, а позиции принадлежат одному из людей, подотчетных менеджеру, то коэффициент равен 1
То, что я пробовал до сих пор:
Я попытался добавить некоторые логи c в таблицу «User Security», чтобы выяснить, кто является текущим пользователем на основе RLS, но он просто нарушает RLS всякий раз, когда я делаю ссылку на измерение «Безопасность пользователя».
Я пробовал на факте создание меры
Current User:=USERNAME()
который возвращает мое текущее имя пользователя, но как только я публикую sh отчет на сервер отчетов, он возвращается пустым. Так как он возвращает пустое значение, я не уверен, как получить текущего пользователя.
Любые мысли очень ценятся.