2016-06-22 6 views
0

Я применяю динамическую безопасность к табличной модели SQL Server в среде обучения. У меня есть таблица безопасности с идентификатором пользователя и соответствующей школой, к которой пользователь должен иметь доступ. Мой DAX-фильтр работает отлично, если у пользователя есть одна школа, но я получаю многозначную ошибку («Таблица с несколькими значениями была предоставлена ​​там, где ожидалось одно значение») для пользователей, имеющих более одной школы. Моя проблема LOOKUPVALUE() вызывает проблему, и я в основном пытаюсь определить, как я могу создать цикл для сравнения Enrollment[SchoolKey] с каждым значением SecurityTable[SchoolKey] для каждого пользователя. Любые мысли очень ценятся!Динамический фильтр безопасности DAX с использованием таблицы поиска с несколькими значениями

= 
CONTAINS (
    'Enrollment', 
    'Enrollment'[StudentKey], Student[StudentKey], 
    'Enrollment'[SchoolKey], LOOKUPVALUE (
     SecurityTable[SchoolKey], 
     SecurityTable[UserId], USERNAME() 
    ) 
) 

ответ

0

Я знаю, что этот ответ поздно, но вы можете попробовать этот фильтр DAX на Приемную таблице:

='Enrollment'[SchoolKey] 
    = LOOKUPVALUE (
     SecurityTable[SchoolKey], 
     SecurityTable[UserId], USERNAME(), 
     SecurityTable[SchoolKey], 'Enrollment'[SchoolKey] 
    ) 

Здесь первое условие поиска в результатах LOOKUPVALUE во всех строках (школы), над которым пользователь имеет доступ, а второе условие поиска дополнительно уменьшает набор результатов до одной строки.

Подробный пример можно найти в MSDN по адресу https://msdn.microsoft.com/en-us/library/hh479759.aspx

 Смежные вопросы

  • Нет связанных вопросов^_^