2016-09-26 2 views
2

После установки куба мне было предложено добавить динамическую безопасность с использованием таблицы пользователей и данных, которые они могут видеть.SSAS OLAP Cube Динамическая безопасность. Множество измерений в одной роли

Проблема в том, что я должен учитывать 3 разных измерения. Я решил использовать таблицу фактов с функцией noneEmpty для подсчета.

NonEmpty([Dimension].[Hierarchy].members, 
    ([Measures].[Allowed Count], 
    [Users].[User].&[UserName] 
    ) 
) 

После установки роли я получил результат, как:

Dim1 | Dim2 | Dim3

1 | A | 300

1 | A | 320

1 | A | 340

1 | B | 300

1 | B | 320

1 | B | 340

Где это должно быть:

Dim1 | Dim2 | Dim3

1 | A | 300

1 | A | 320

1 | B | 340

Данные для разрешенного доступа пользователей хранятся в таблице как

UserName | Dim1Key | Dim2Key | Dim3Key

Иерархия подобна Каждый Dim1 содержит каждый тип Dim2, который содержит каждый тип Dim3.

И пользователь может получить доступ только к данному элементу Dim3 в Dim2 в Dim1.

Есть ли способ соединить эти размеры в MDX так каждый Dim в конце концов имеет только свои соответствующие значения

UPDATE:

После некоторых исследований я получил этот запрос:

SELECT [Measures].[CC Count] ON 0, 

NonEmpty(
(
NonEmpty((Dim1.children), 
    ([Measures].[CC Count], 
    [Users].[User].&[userName] 
    )) 
    , 
NonEmpty((Dim2.children), 
    ([Measures].[CC Count], 
    [Users].[User].&[userName] 
    )), 
NonEmpty((Dim3.children), 
    ([Measures].[CC Count], 
    [Users].[User].&[userName] 
    )) 
    ) 
    ,([Measures].[CC Count], 
    [Users].[User].&[userName] 
    )) 
ON 1 
FROM [Cost Center] 

Это дает мне желаемые результаты, но я не могу поместить его в Dimensiom Data in Role. Есть ли способ изменить его?

ответ

1

Попробуйте создать новое скрытое измерение, в котором атрибут ключа имеет составной ключ key1, key2 и key3. Вам нужно будет выбрать некоторую NameColumn, но это не имеет значения. Поэтому выберите ключ1 как имя. Вам ничего не нужно в размерности, кроме ключа измерения.

Использование размера вашего дизайнера куба, убедитесь, что это новое измерение объединено со всеми таблицами фактов и группой мер безопасности, которая предоставила измерение CC Count.

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

+0

благодарит за ответ. Я реализую вашу идею только сейчас и задаюсь вопросом. Это новое измерение должно основываться на базе таблицы безопасности или главной таблицы фактов? – Zergister

+0

@Zergister hmm. Если бы он был построен на перекрестном соединении всех 3 ключей, это было бы слишком большим? Если нет, тогда сделайте это. Если это так, вам понадобится любая комбинация, которая существует в любой таблице фактов как минимум. – GregGalloway

+0

Ну, я просто дошел до того же вывода: D – Zergister

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

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