2010-03-02 107 views
0

我試圖在TFS多維數據集上創建一個MDX查詢,該查詢獲取估計字段的歷史值。對於每個任務,我想要爲設置「估計」字段的每個人獲取最新估計值。例如,如果項目經理Bob將估算值設置爲24小時,然後開發人員將其設置爲32小時,則我想創建一個查詢,以顯示每個估算值與實際工作時間的差異[工作完成]。在MDX查詢中獲取葉節點

我遇到的問題是TFS中工作項目的歷史值跟蹤的是revs(修訂版),但TFS將正面和負面的值都放在單個rev中用於更改的工作項目。這使得總和看起來像0 /空單元格。

例如鮑勃設置估計到24轉2.然後戴夫將其設置爲32轉3. TFS添加另一行的-24數據倉庫爲REV 2,當這個被捲起我不能看鮑勃的估計。

如何僅選擇正值?我試圖使用過濾器功能,這將返回正確的成員,但該單元格的值仍是空

with 
member [Last Estimate] as [Measures].[Microsoft_VSTS_CMMI_Estimate] 
SELECT 
    {nonempty([Changed By].[Person].[All].Children*[Last Estimate])} ON 0, 
    {nonempty([Work Item].[System_Id].[System_Id]*Filter([Work Item].[System_Rev].[All].Children, [Measures].[Microsoft_VSTS_CMMI_Estimate] > 0))} ON 1 

FROM [Work Item History] 
WHERE [Team Project].[Team Project].&[29]; 

這是效果

Work  rev  Bob    Dave 
Item   Last Estimate Last Estimate 
7446  2 (null)   (null) 
7446  3 (null)   32.0 

每一行都應該有一個價值的一個兩個人。

在此先感謝!

回答

1

過濾器函數過濾了維度的成員,但這不夠,因爲成員可以包含例如24和-24。嘗試使用Iif函數過濾度量本身:

with 
member [Last Estimate] as 
' 
Iif([Measures].[Microsoft_VSTS_CMMI_Estimate] > 0, [Measures].[Microsoft_VSTS_CMMI_Estimate], 0) 
' 
SELECT 
    {nonempty([Changed By].[Person].[All].Children*[Last Estimate])} ON 0, 
    {nonempty([Work Item].[System_Id].[System_Id]*Filter([Work Item].[System_Rev].[All].Children, [Measures].[Microsoft_VSTS_CMMI_Estimate] > 0))} ON 1 

FROM [Work Item History] 
WHERE [Team Project].[Team Project].&[29]; 
+0

感謝魯道夫,但那並沒有奏效。它只是將所有零值更改爲0。 – 2010-03-02 17:35:09

+0

我看到了,您在列中使用的維度似乎沒有正確的鏈接到事實表。我不知道TFS立方體的結構,但可能是[Changed By]。[Person]不包含最初設置估算的人員? – Rudolf 2010-03-03 09:51:37

+0

另一個想法是,它可能與計算的聚合級別有關。我只是碰到這個問題,它描述了同樣的問題:http://stackoverflow.com/questions/2371539/calculated-measure-dimension – Rudolf 2010-03-03 14:33:43