1

SSAS를 사용하여 사용자 정의 BI 응용 프로그램을 다시 작성하는 중입니다. 기본적으로 사용자는 판매 담당자와 지역의 현재 상태를 분석하고 "what if"시나리오에서 영역 경계와 할당을 조정 한 다음 시나리오가 보이는 방식으로 변경 사항을 적용하려고합니다. 각 사용자는 상사를 표시하기 위해 다양한 시나리오를 가질 수 있으며 시나리오가 승인되면 판매 조직의 새로운 현재 상태가됩니다. 나는 이것을 달성하기 위해 ROLAP과 HOLAP의 조합을 많이 사용하게 될 것입니다.가변 수의 대체 현실을위한 유형 3 천천히 변화하는 차원

내 상사와 나는 시나리오 기능을 구현하는 방법에 대해 의견이 분분하다. 그는 SSAS의 작동 방식에 대한 임원 수준의 요약본을 보유하고 있으며 수 주 동안 SSAS를 실험하고 Kimball 성경을 읽었을 때 데이터베이스 응용 프로그램을 구축 한 경험을 활용 해 왔지만 다차원 모델링에 아직은 비교적 익숙하지 않습니다. 나는 단지 그들이 다음과 같이 나의 아이디어를 승인하거나 거절하거나 조정할 것을 알고있는 사람이 필요합니다.

Create Table SlowlyChangingDimension 
(
    SurrogateId Int Identity(1,1) Not Null, 
    NaturalId NVarChar(50) Not Null, 
    BeginDate DateTime Not Null, 
    EndDate DateTime Not Null, 
    IsCurrent Bit Not Null, 
    IsCommitted Bit Not Null, 
    -- Data columns 
    Constraint PK_SlowlyChangingDimension Primary Key Clustered (SurrogateId), 
    Constraint Ck_SlowlyChangingDimension_DateRange Check (EndDate > BeginDate) 
) 

나는 BEGINDATE, 종료 날짜 및 대해 IsCurrent 컬럼의 적절한 사용을 통해 기록 데이터를 유지 :

나는 다음과 같이 대략 볼 2 형 SCD 테이블의 번호를 가지고있다. 새로운 데이터가 들어 오면, 나는 현재 버전의 객체를 끝내고 새로운 현재 버전을 만든다.

이제 시나리오를 처리하기 위해 SCD에서 특정 버전의 개체에 태그를 지정하는 데 사용할 시나리오 테이블을 추가하고 싶습니다. 새로운 시나리오가 생성 될 때 시나리오와 함께 SCD의 각 객체의 커밋 된 버전에 태그를 붙입니다. 커밋 된 버전은 이러한 방식으로 여러 시나리오에 존재할 수 있기 때문에 M2M 링크는 브리지 테이블에 의해 촉진됩니다.

이제 시나리오가 만들어졌으며 초기 상태가 커밋 된 상태와 동일하므로 사용자가 변경을 시작할 수 있습니다. 변경 사항은 IsCommitted = False 인 추가 현재 행으로 SCD 테이블에 저장됩니다. 변경이 이루어지면 시나리오 브리 지 테이블이 갱신되어 오브젝트의 커미트 된 버전에 대한 링크가 삭제되고 오브젝트의 새로운 대체 버전에 링크됩니다. 시나리오가 커밋되면 이전의 커밋 된 버전이 종료되고 대체 버전이 커밋되며 시나리오와 SCD 테이블의 행에 대한 링크가 모두 삭제됩니다.

나에게 이것은 합리적으로 들립니다. 그러나 보스는 시나리오 데이터를 별도의 테이블에 저장하고 별도의 큐브를 통해 볼 수 있도록 새로운 시나리오를 만들 때 런타임에 추가 스키마 요소를 생성하려고합니다. 이것은 런타임에 스키마를 변경하는 것이 안티 패턴이라는 것을 확실히 알고 있기 때문에 잘못된 길로 문질러 듭니다.

+0

대답이 허용 된 답변으로 충분할 지 결정한 적이 있습니까? 당신은 궁극적으로 무엇을하기로 결심 했는가? – condiosluzverde

+1

나는 그렇지 않았다. 우리는 SSAS와 함께 가지 않기로 결정했습니다. 그리고 그 프로젝트는 어쨌든 오래 지나지 않았습니다. –

답변

1

Analysis Services 큐브의 스키마를 런타임에 프로그래밍 방식으로 다시 생성 할 수는 있지만 처리가 수행 될 때까지 기다려야합니다. 작은 데이터 집합의 경우 매우 빠르거나 많은 데이터의 경우 매우 오래 걸릴 수 있습니다. 그러나 실제로 Analysis Services는 상대적으로 정적 인 스키마를 사용합니다. 데이터를 추가하고 큐브를 다시 처리함으로써 증분 업데이트를 통해 추가 시나리오를 처리하여 신속하게 처리 할 수 ​​있습니다. 예산 및 예측 응용 프로그램은 일반적으로 스키마 변경이 아닌 데이터 변경을 통해 새로운 시나리오를 추가하는 등 나중에이 방법을 사용합니다.