2012-05-23 30 views
3

首先,SSAS非常新。但我想要完成的事情似乎相當微不足道(我希望)。抓取自定義時間段的第一個或最後一個值

我有第二個發生的交易數據。我創建了兩個時間維度。一個維度基於使用時間維度嚮導的標準時間維度。另一個是由我自己的腳本生成的時間維度,我在這一天的每一秒都有記錄。

我已將我的事實表與我的維度關聯起來,並正確部署了我的多維數據集。在我的事實數據中,其中一個屬性是價格。現在使用最小和最大值,我可以獲得特定時間段內發生的最高價格和最低價格。我想獲得的是一段時間內發生的第一個和最後一個價格。我試過使用「第一個值」和「最後一個值」,但是返回的內容不正確,似乎是某種聚合。

舉例來說。如果我的價格在1分鐘的時間分別爲:

1233,1233.85,1300,1250

首先應該返回,1233和最後應該回到1250這個應該在所有時間段的工作。

要添加,對於我的自定義時間維度,我嘗試將其類型設置爲「時間」,但結果保持不變。我很欣賞任何建議。我基本上希望獲得基礎價值和最後價值的第一個價值。

實例查詢得到我的一部分的方式有:

SELECT NON EMPTY 
    { [Measures].[High] 
    , [Measures].[Low] 
    , [Measures].[Price Count] 
    , [Measures].[Price] 
    } ON COLUMNS 
    , NON EMPTY 
    { [Dim Date].[Year - Week - Date].[Date].ALLMEMBERS 
    * HEAD([Dim Time].[Hour - Second].[Second].ALLMEMBERS) 
    } ON ROWS 
FROM [Cube] 

enter image description here

注意,價格數列有多個記錄。我需要從這裏的第一條記錄,我不想要實際的總和。

回答

0

嘗試創建一個獲取時間維度第一秒的價格的新度量。例如,如果您想要一天中的第一秒,那麼您不需要它在行上的交叉連接中,但可以在計算的度量內獲得[小時 - 秒]層次結構的第一秒:

with 
    member [Measures].[First Price] as 
     (head(descendants([Dim Time].[Hour - Second].CurrentMember, Second)), [Measures].[Price]) 
select 
    non empty { 
     [Measures].[High], 
     [Measures].[Low], 
     [Measures].[Price Count], 
     [Measures].[Price] 
    } on columns, 
    { 
     [Dim Date].[Year - Week - Date].[Date].ALLMEMBERS 
    } on rows 
from 
    [Cube] 

如果您希望縮短時間段,例如按小時,嘗試類似:

non empty { 
     [Dim Date].[Year - Week - Date].[Date].ALLMEMBERS * [Dim Time].[Hour - Second].[Hour] 
    } on rows 
相關問題