2010-07-26 77 views
0

我在嘗試設置多維數據集計算。我目前的職責是收到匯率,並在月初發送。有時他們會在這個月內改變,我會收到一個用於該貨幣的匯率。遞歸日級計算的彙總

最初的問題是LastNonEmpty使用被質疑的粒度,這意味着當我查詢大部分日子時沒有匯率,所以計算失敗。我取代了匯率的措施,初步形成了具有遞歸計算,但後來有以下幾點:

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

因此,在日期維度看時,它會得到最新的匯率。這使得每天的計算如下:

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

最後我用這個在查詢:

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] 

這一切工作正常,但最好我寧願由年/月來查詢,因爲這些是月末報告。我可以在代碼層中總結所有這些,但我寧願讓MDX自己做。

問題是計算幾乎在日期級遞歸完成,那麼我希望他們捲到月份(甚至年份)級別。

我也嘗試了貨幣轉換向導,交換匯率上面的時間聚集之一,但嘗試瀏覽多維數據集在SSMS鎖定了服務器,因爲它試圖做聚合整個日曆:(

有什麼建議最好採用什麼方法?

回答

1

如果您在DSV中使用視圖或命名查詢而不是表格,那麼您可以調整視圖或命名查詢以將數據限制爲您已加載交換的日期我不確定這是否會滿足您的業務需求,但您可以通過這種方法消除空數據問題。畢竟,加載不包含數據的數據沒有多大用處在一個值中,或者更糟糕的是,預先加載一個實際可用數字後必須重寫的預期匯率。

+0

一個有趣的方法,但我認爲它不會奏效 - 每天都會有數據需要轉換,但每天不會有匯率 - 我需要使用數據的最新匯率,在一天的水平,回顧該貨幣的最新匯率。我想知道現在是否可以通過遞歸CTE視圖來生成匯率... – Meff 2010-07-27 07:50:18

+0

OK,所以遞歸CTE的工作,我開始用我隨後沿着日期向上走的匯率,使用我遇到的下一個匯率貨幣。最後4個CTE,1是遞歸的:o – Meff 2010-07-27 09:50:28