2013-08-21 85 views
1

如何根據日期/時間戳創建一個動態計算字段以確定以天爲單位的年齡?是否可以創建一個動態計算的字段?

例如說我有一個有日期時間戳的字段。瀏覽多維數據集時,我希望能夠看到的是顯示自時間戳以來的天數的列。因此,如果日期時間戳記爲'8/21/13 12:00 PM',並且我在'8/22/13 12:00 PM'瀏覽了多維數據集,則計算的列「天數以後」將顯示1.

這對SSAS甚至可能嗎?

回答

1

是的,你可以:

with member Measures.[date string] as 
      Left(Right([Date].[Date].CurrentMember.UniqueName, 9), 8) 
    member Measures.[date formatted] as 
      Left(Measures.[date string], 4) + "-" + 
      Mid(Measures.[date string], 5, 2) + "-" + 
      Right(Measures.[date string], 2) 
    member Measures.[date date] as 
      CDate(Measures.[date formatted]) 
    member Measures.[to today] as 
      now() - Measures.[date date] 
      , format_string = 'yy" years, "m" months, "d" days"' 

select { 
      Measures.[date string], 
      Measures.[date formatted], 
      Measures.[date date], 
      Measures.[to today] 
     } 
     on columns, 
     [Date].[Date].[Date].Members 
     on rows 
    from [Adventure Works] 

給你想要的東西。你當然不需要所有的中間措施,他們只是逐步顯示什麼是計算。

但是有一點說法:我使用yy以日期格式格式化了to today度量。四位數的年份將顯示爲「1912年」等,因爲SSAS在內部使用日期編碼,如Excel自1900年1月1日以來的天數。我錯誤地使用了此處的日期格式來格式化持續時間,這是一個數字而不是真實的日期。這種格式化方法只能在正面持續時間少於100年的情況下給出正確的結果。但這只是一個格式問題,主要的持續時間計算是正確的。它只是以天爲單位顯示持續時間,並以一小部分顯示一天內的時間。

相關問題