В базе данных SSAS я использую измерения «агентства» и «кампании». Есть около десяти агентств и около 2000-5000 кампаний на каждое агентство. Требование состоит в том, чтобы разрешить пользователям на уровне агентства. Когда пользователь находится в роли, которая разрешена только для агентства 1, он не должен иметь возможности просматривать какие-либо другие кампании, кроме кампаний агентства 1.
Конечно, это можно сделать, просто предоставив роли доступ к членам кампании, принадлежащим агентству 1. Для этого потребуется очень длинный оператор MDX. Тем не менее, я думаю, что сценарий довольно распространен, и я заметил несколько подходов, но я не знаю, какой из них является хорошей практикой:
- Использование фальшивых фактов между агентствами и кампаниями (кажется излишним, так как в таблице кампаний есть agengyID)
- Использование оператора MDX в разрешениях кампании, который выбирает кампании через членов родительского агентства.
- Настройте иерархию между агентством и кампанией (на самом деле я пытался это сделать, и это кажется логичным, но иерархии, похоже, вообще не связаны с разрешениями)
- Может что-то совсем другое?