2011-12-21 99 views
0

我想在SSAS中編寫一個KPI,它將所有員工年齡的平均值都給出。員工的出生日期在Dim_Employee中。我已經閱讀了3本充滿MDX日期和時間處理建議的書籍,但都沒有成功。隨着數小時的絕望試驗和錯誤,我嘗試了無數次的解決方案,但沒有成功。在SSAS中使用DateDiff MDX

出生日期是源數據庫中的datetime(空)。我試圖解決方案如下:

VBA!DateDiff("yyyy", now(), [Employee].[BirthDate].CurrentMember.Member_Value) 

當然,我應該用[Date].[Date].CurrentMember代替now(),但爲了簡單起見我用這個。

在Employee維度中,我使用Date數據類型創建了一個ValueColumn。當我嘗試在Management Studio來執行它,它給我回了以下錯誤:

"The Axis0 function expects a tuple set expression for the argument. A string or numeric expression was used."

當我不使用Member_Value,它給回空,則DateDiff還給-2010

因爲我對我想寫這個關鍵績效指標的立方體結構沒有責任,所以我搜索了一個不需要新的度量,尺寸的解決方案。 (然而,如果沒有向立方體添加新元素的情況下沒有解決方案,那麼我當然會在給定的立方體中提出改變請求)

這種情況下的解決方案是什麼?是否可以在不使用其他度量的情況下編寫此KPI?

回答

1

回答我的問題。

看起來這不能像我試過的那樣解決。最後,我在T-SQL下向Fact_Headcount添加了一個新列,該列現在對Dim_Employee和Dim_Date使用INNER JOIN,並使用T-SQL的DateDiff爲每個給定日期時間的每個員工計算年齡。現在我在此HeadCount MeasureGroup中添加了年齡作爲衡量標準,現在我可以設法執行此KPI計算。

這意味着我必須對底層模型進行修改以解決此問題。

+0

祝賀解決方案。如果可以,請確保將您的答案標記爲「已接受」,以便其他人可以從您的成功中學習。乾杯〜 – 2011-12-21 18:23:55

0

嘗試使用CDATE功能:

VBA!DateDiff("yyyy", now(), CDate([Employee].[BirthDate].CurrentMember.Member_Value)) 
0

我與你的答案接受,我們也可以做到這一點像

Datediff("yyyy",Now(),[Delivery Date].[Date].CurrentMember.Name) 

- 這裏的格式,目前()和成員正在發行。當我在[冒險作品]立方體與正確的正方形時,我越來越幾年了