2010-07-26 7 views
0

큐브 계산을 설정하려고합니다. 현재 나의 송금은 환율을받을 것이며이 금액은 매월 초에 보내질 것입니다. 때로는 그 달에 변경 될 것이고, 그 통화 이후에 사용할 환율을 받게 될 것입니다.재귀 일별 계산 집계

초기 문제는 LastNonEmpty가 질문의 입상 성을 사용한다는 것입니다. 즉, 하루에 대부분의 요일에 쿼리 할 때 환율이 없으므로 계산이 실패합니다. 날짜 차원에서 볼 때

WITH 
MEMBER [Measures].[EOD] 
AS 
    Aggregate({NULL:[Date].[Calendar Y M D].CurrentMember}, [Measures].[End Of Day Rate]) 

그래서, 그것은 가장 최근의 환율을 얻을 것이다 : 나는 나중에 다음에, 처음 재귀 계산과, 환율의 측정을 대체했다. 다음으로, 년/월별로 조회 할이 모든 작품을 잘

SELECT 
{ 
    [Measures].[Converted] 
} 
ON COLUMNS, 
NON EMPTY 
{ 
    [Date].[Calendar Y M D].[Calendar Day].&[2010-Q3-08-01] : 
    [Date].[Calendar Y M D].[Calendar Day].&[2010-Q3-08-31] 
} 
ON ROWS 
FROM [Cube] 

하지만 이상적으로 내가 선호하는 것 :

MEMBER [Measures].[Converted] 
AS 
    SUM 
    ( 
     {[Currency].[Currency].[Currency] * [Date].[Calendar Y M D].CurrentMember}, 
     (
      ( 
       [Measures].[Sales] 
      ) 
      /[Measures].[EOD] 
     ) 
    ) 

가 마지막으로 내가 쿼리에서 이것을 사용 : 다음과 같이 매일 계산을 할 수 있습니다 월말 보고서입니다. 이 모든 것을 코드 계층에서 합할 수는 있지만 MDX를 사용하면 코드 자체에서 처리 할 수 ​​있습니다.

문제는 계산이 거의 재귀 적으로 일일 수준에서 수행 된 다음 해당 월 (또는 심지어 1 년) 수준까지 롤업하고 싶습니다. 그것은 전체 일정에 대한 집계를하려고 노력으로

나는 서버를 잠긴 위의 시간이 집계 한에 대한 환율을 교환하지만, SSMS에서 큐브를 찾아 시도, 통화 변환 마법사를 시도했다 :(

어떤 접근 방식을 취하는 것이 가장 좋을까요?

답변

1

테이블 대신 DSV에서 쿼리 또는 명명 된 쿼리를 사용한 경우보기 또는 명명 된 쿼리를 조정하여 데이터를 교환 한 날짜로 제한 할 수 있습니다 데이터가 귀하의 비즈니스 요구를 충족시킬 지 확신 할 수 없지만이 방법을 통해 빈 데이터 문제를 제거 할 수 있습니다. 결국 데이터가로드되지 않는 경우가 많습니다. 가치가 떨어지거나, 더 나쁜 경우, 실제 수치가 나오면 덮어 써야하는 가망 고객 환율을 미리로드합니다.

+0

흥미로운 접근 방법이지만 작동하지 않을 것이라고 생각합니다. 매일 변환 할 데이터가 있지만 매일 환율이 없습니다. 데이터에 가장 최근의 환율을 사용해야합니다. 일일 수준에서 그 통화의 최신 환율을 거꾸로보고 있습니다. 재귀 CTE보기로 환율을 거꾸로 생성 할 수 있는지 궁금합니다 ... – Meff

+0

OK 재귀 CTE가 작동 했으므로 다음 환율을 사용하여 날짜별로 위쪽으로 걸어갔습니다. 통화. 결국 4 CTE, 1 재귀 적이 있었다 : o – Meff