2016-09-26 1 views
2

큐브를 설정 한 후에 볼 수있는 사용자 및 데이터 테이블을 사용하여 동적 보안을 추가하라는 메시지가 표시되었습니다.SSAS OLAP 큐브 동적 보안. 하나의 역할에있는 많은 차원

문제는 3 가지 다른 차원을 고려해야한다는 것입니다. count에 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

데이터가

사용자 이름과 같은 테이블에 저장됩니다 | Dim1Key | Dim2Key | Dim3Key

계층 구조는 과 같습니다. 각 Dim1에는 Dim3의 각 유형이 포함 된 각 유형의 Dim2가 포함됩니다.

사용자는 Dim1의 Dim2에서 주어진 Dim3 멤버에만 액세스 할 수 있습니다.

결국 MDX에서 각각의 딤섬을이 차원을 연결하는 방법은 각각의 값

이 가지고있다

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] 

이렇게하면 원하는 결과를 얻을 수 있지만 Role의 Dimensiom Data에 배치 할 수 없습니다. 그것을 바꿀 수있는 방법이 있습니까?

답변

1

키 속성에 key1, key2 및 key3의 복합 키가있는 경우 새로운 숨겨진 측정 기준을 만들어보세요. NameColumn을 선택해야하지만 중요하지 않습니다. 그래서 key1을 이름으로 선택하십시오. 치수 키를 제외하고 치수에는 아무 것도 필요하지 않습니다.

큐브 디자이너의 차원 용도에서이 새 차원이 모든 팩트 테이블과 CC 계수 측정 값을 제공 한 보안 측정 값 그룹에 조인되었는지 확인하십시오.

그런 다음 해당 차원에서 역할 기반 보안을 만듭니다.사용자는 모든 측정 기준의 모든 회원을 볼 수 있지만이 새로운 복합 키 측정 기준은 예상치 못한 사실 행을 확인할 수 없도록합니다. 그리고 이것은 셀 보안이라는 대안보다 훨씬 더 잘 수행되어야합니다.

+0

답장을 보내 주셔서 감사합니다. 지금 당장 귀하의 아이디어를 구현하고 질문이 있습니다. 이 새로운 차원은 보안 테이블 또는 주요 팩트 테이블의 기반 위에 구축되어야합니다. – Zergister

+0

@ 자ergister 흠. 3 개의 키를 십자가 조인 (cross join)하여 구축했다면 너무 큽니까? 그렇지 않다면 그렇게하십시오. 그렇다면 사실 테이블에 최소한 존재하는 모든 조합이 필요합니다. – GregGalloway

+0

글쎄, 난 그냥 같은 결론에 도달 : D – Zergister