Перевести DAX в многомерные выражения

#dax #mdx

Вопрос:

Я собираюсь внедрить безопасность на уровне динамических строк в свою модель.

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

Идеально работает в табличной форме SSAS.

Код DAX из моей табличной модели SSAS, которая реализована в ролях -> Фильтр строк по измерению DimBrugerRettigheder ->> DAX :

=ЕСЛИ(СОДЕРЖИТ(DimBrugerRettigheder, [original_login], ИМЯ ПОЛЬЗОВАТЕЛЯ()), DimBrugerRettigheder[original_login] = ИМЯ ПОЛЬЗОВАТЕЛЯ(), TRUE())

Многомерная модель данных почти идентична моей табличной модели.

Просто нужно перевести код в многомерные выражения

Код многомерных выражений будет реализован в роли -> данные измерений ->> dimension DimBrugerRettigheder ->>> Дополнительно ->>>> Разрешенный набор элементов: ->>>>> Редактировать многомерные выражения

Ответ №1:

Я понимаю, что смысл вашего кода таков: «если имя текущего пользователя не содержится в столбце (в DAX, в многомерных выражениях это был бы атрибут) «original_login», затем предоставьте доступ ко всем строкам, в противном случае предоставьте доступ только к строкам, в которых столбец/атрибут содержит имя пользователя в качестве содержимого.

Я бы перевел это в многомерные выражения следующим образом:

 IIf(IsError(StrToMember('[DimBrugerRettigheder].[original_login].['   UserName   ']')),
    [DimBrugerRettigheder].[original_login].[original_login].Members,
    {StrToMember('[DimBrugerRettigheder].[original_login].['   UserName   ']')}
   )
 

По сути, если для атрибута current in нет допустимого члена Username [DimBrugerRettigheder].[original_login] , то все члены являются разрешенным набором членов, в противном случае только этот единственный член является единственным членом набора разрешенных членов.