2010-07-07 3 views
1

먼저 Analysis Services는 처음이지만 새로운 차원으로 기존의 복잡한 큐브를 확장해야한다는 것을 인정해야합니다. 심지어 내 문제가 어디서 시작 해야할지 계획을 가지고 있지 않다는 것을 말하지 않고 말할 수있는 것은 어렵다. 좋아, 나는 내가 원하는 것을 말하려고 노력할 것이다.SSAS : 명명 된 쿼리

데이터 소스보기에 named calculation '반환'이 표시됩니다. 그 표현은 다음과 같습니다

CASE WHEN fimaxActionCode IN (1, 2, 3, 4, 5, 8, 9, 12, 14, 17, 18, 20, 21, 22, 23, 24, 25, 30, 31, 32, 35) THEN 
'yes' 
ELSE 
'no' 
END 

fiMaxActionCode는 외래 키와 '반환'에 대한 기존의 규칙이 maxActionCode 위의 한 때 청구 (주 measuregroup)는 반환이라고했다입니다. 새로운 규칙은 maxActioncode가 위와 같지만 이전 fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28) 클레임이없는 경우 클레임이 인 경우 Return입니다. , 29, 30, 33, 34, 36, 37). 이전의 주장은 동일한 SSN_Number를 가진 TOP (1) 클레임이며 Repair_Completion_date <이 클레임입니다. 내 질문 (누군가가 내 뜻을 이해하기를 바랍니다) : 이 새로운 차원을 만드는 방법은 무엇입니까?

SELECT  TOP (1) claim.iddata as ClaimID,PreviousClaim.idData as prevClaimID, PreviousClaim.fimaxActionCode, Claim.Repair_Completion_Date as ClaimRepDate, PreviousClaim.Repair_Completion_Date as PrevClaimRepDate 
FROM   tabData AS PreviousClaim LEFT OUTER JOIN 
         tabData AS Claim ON PreviousClaim.idData <> Claim.idData 
WHERE  (PreviousClaim.fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33, 34, 36, 37)) AND (PreviousClaim.fiClaimStatus IN (1, 4, 254, 255, 6)) 
         AND (PreviousClaim.SSN_Number = Claim.SSN_Number) AND (PreviousClaim.Repair_Completion_Date < Claim.Repair_Completion_Date) 
ORDER BY PreviousClaim.Repair_Completion_Date DESC; 

그런 다음 내가 그것을는 "불규칙한 이전의 주장을"이 있는지 확인하는 청구 - 테이블 Datasourceview의 새로운 Named Calculation을 만들고 싶었 : 내 첫번째 생각은 새 명명 된 쿼리 'PreviousClaim'을 만드는 것이 었습니다. 이게 가야할 길이 아니면 완전히 잘못된 길에 있을까요 ??

EDIT : 다른 질문 :이 이름이 지정된 쿼리를 어떻게 쿼리합니까? 내가 매개 변수 :

AND ([email protected]) 

감사를 f.e 정의 할 수 있습니다, 팀

답변

1

어떻게이 데이터는 실제 청구 차원으로로드 (또는 무엇이든 그것의 이름이 될 수있다)? 내가 묻는 이유는이 작업은 MDX 계산 된 멤버를 작성하는 것보다는로드 프로세스 중에이 규칙을 추가하면 더 잘 해결 될 수 있습니다.

MDX로 ​​불쾌해질 수있는 fimaxActionCode를 사용하여 유닛에 이전 클레임이 있었는지 여부를 확인하려면 데이터를 검토해야하기 때문에로드 시간 동안 쉽게 분리하여 적절하게 분할 할 수 있습니다 즉, 이전 청구가 있거나 이전 청구가없는 경우 8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33 , 34, 36, 37). 본질적으로 당신은 일종의 천천히 변화하는 차원을 창조 할 것입니다. 왜냐하면 이러한 주장에도 일종의 시간 관계가 있다고 가정하고 있기 때문입니다. 언제 이런 주장이 일어 났는지 등등을 말합니다.

나는 당신이 같은 차원을 활용할 수 있다고 제안했고 그 항목이 클레임인지 아닌지를 나타내는 추가 필드를 추가했다. 그리고 "새로운"Return 기준에 해당하지 않으면 단순히 레코드를 남겨 두었다.

의미가 있습니까?

+0

"로드 프로세스"란 무엇을 의미합니까? 큐브의 처리 또는 관계형 데이터베이스에 새 행을 삽입하는 프로세스? 데이터베이스 가져 오기는 매일 밤마다 실행되는 Windows 서비스이므로이 기능으로 데이터베이스 가져 오기를 확장 할 수 있습니다. 또한 큐브가 다시 작성되기 전에 매일 실행되는 저장 프로 시저가 있습니다. 그건 좋은 곳이 될거야, 그렇지? Btw, 이전 차원을 수정해서는 안되며 공존해야합니다. 어쨌든 고마워, . –

+0

@Tim : 저장 프로 시저가 Windows 서비스를 변경하는 대신 이러한 변경 작업을 수행하는 가장 쉬운 장소라고 말할 수 있습니다. 현재의 차원을 변경할 수 없으므로 (이유를 모르겠 음) 게시물에 명시된 새로운 규칙에 따라 채워지는 새 차원을 가리 키도록 FACT 테이블에 새 키를 추가해야합니다. – ajdams

+0

새 반환 규칙과 이전 규칙을 비교할 수 있도록 이전 반환 값이 있어야합니다. 저장 프로 시저 접근 방식을 시도해 보겠습니다. 그러나 그것은 매일 아침마다 테이블 전체를 업데이트해야한다는 것을 의미합니다 (> 10Mio Claims)?! 가끔씩 SSS의 기초를 고수하기 때문에 사실 테이블에 새 키가있는 힌트를 주셔서 감사합니다.) –

관련 문제