2012-11-02 2 views
1

이상한 방식으로 계산해야하며 대부분의 경우 잎과 다차원 차원의 집계 수준 모두에서 작동합니다. 그러나 하나의 특정 차원에 대해 정확하게 집계 된 값을 제공하지는 않습니다. 당신이 볼 수 있듯이SSAS에서 계산 된 측정 값 집계의 다른 비틀림

내가 지금 가지고하는 것은 ...

CREATE MEMBER CURRENTCUBE.[Measures].[Active Commitments] 
AS NULL, 
FORMAT_STRING = '#,#', 
VISIBLE = 1;  

SCOPE (DESCENDANTS([Date Dimension].[Fiscal Year Hierarchy],,AFTER));  
[Measures].[Active Commitments] = 
iif([Constituent Activity].[Type].currentMember.Properties("Name")="Correspondence", 
    sum(([Commitment Dates].[Start Date], NULL: [Date Dimension].[Fiscal Year Hierarchy]), [Measures].[Commitment Count]), 
    sum(([Commitment Dates].[First Funded Date], NULL: [Date Dimension].[Fiscal Year Hierarchy]), [Measures].[Commitment Count])) 
     - sum(([Commitment Dates].[Stop Date],[Commitment].[Was Commitment Ever Active].[Sometime Active], NULL: [Date Dimension].[Fiscal Year Hierarchy]), [Measures].[Commitment Count]); 
END SCOPE; 

SCOPE (DESCENDANTS([Date Dimension].[Fiscal Year Hierarchy],,AFTER)); 
<Similar to above> 

는 복잡성은 "약속"의 한 유형이 [Start Date]에서 시작하고 다른 사람들이 [First Funded Date]에서 시작한다는 것입니다.

의 여러 멤버를 선택하면이 경우 SCOPE 문에 currentMember을 사용할 수 없으므로 실패합니다. 예를 들어, 다음 MDX는 성공적으로 실행되지만 출력은 #Error는 -

select 
    [Measures].[Active Commitments] on columns 
    ,[Date Dimension].[Fiscal Year Hierarchy].[Fiscal Year].&[2011\12] on rows 
from Compass3 
where 
    {[Constituent Activity].[Description].[XYZ] 
    ,[Constituent Activity].[Description].[ABC]} 

나는 재귀 인 SCOPE 문 내에서 인코딩해야 어떻게 생각 ...

if a single member of [Constituent Activity] is current 
then use the calc as defined above 
else use [Measures].[Active Commitments] = sum(all selected members of [Constituent Activity], [Measures].[Active Commitments]) 

...하지만 어떻게 것 내가 쓴거야?

답변

1

데이터웨어 하우스/데이터 원본보기로 다시 제어 할 수 있습니까? 계산 된 필드를 팩트 테이블에 추가 할 수 있으므로 셀 수준에서 [약 액티브 날짜]를 가질 수 있습니까? 그러면 큐브에서 훨씬 더 간단한 계산을 할 수 있습니다.

데이터웨어 하우스에서 비즈니스 규칙을 적용하고 비즈니스 계산을 수행하는 것이 장기적으로 더 효율적이고 간편하다는 것을 알았습니다.

+0

감사합니다. 나는 그것을 제어 할 수는 있지만 상속 된 입방체이며 원하지 않는 부작용을 피하기 위해 최대한 표면에 가깝게 변경하려고 노력했습니다. 날짜 처리를위한 현재 구조는 매우 복잡하므로 다른 날짜를 추가하는 것은 까다 롭습니다. – MattClarke

관련 문제