2013-08-19 45 views
1

我是MDX的新手,我有一個簡單的問題。我與TFS Cube一起工作,它被命名爲Team System。我的問題:MDX比較日期時間屬性

我有一個IIF表達式,我想用AND運算符來檢查額外的表達式。在那裏我想比較兩個DateTime對象。該報告只應顯示實際日期的數據。在這裏我的代碼:

IIF(ISEMPTY(SUM(YTD(
    [Work Item].[PlannedWeek__HierarchyByWeek].CurrentMember), 
    [Measures].[EffectivelyValue])) 

和[工作項目] [PlannedWeek__HierarchyByWeek] .CurrentMember < NOW()

, [Measures].[EffectivelyValue] 
    , SUM(YTD(
    [Work Item].[PlannedWeek__HierarchyByWeek].CurrentMember), 
    [Measures].[EffectivelyValue])) 

計劃本週是自創建字段,它有日期時間數據類型。 Now()函數也有一個DateTime數據類型,所以比較應該是正確的,但它什麼都沒發生。

感謝您在期待

尤金

回答

1

層次成員MDX有「部件」的數據類型,並且沒有像日期時間,字符串或整數一個「原始」數據類型。只有成員屬性具有「原始」數據類型。你可以定義一個屬性,如你周屬性的datetime。假設你是SQL Server分析服務,這將通過關係完成。

或者您可以使用字符串操作從UniqueName屬性中提取日期信息,從而避免必須更改多維數據集。 UniqueName包含您在多維數據集設計中定義爲鍵的數據。假設你一週層次結構成員的關鍵,從中可以通過字符串函數爲3013年8月20,提取像20130820(我只是將使用Mid(, 30, 8)下面的例子),你可以不喜歡

CLng(Mid([Work Item].[PlannedWeek__HierarchyByWeek].CurrentMember.UniqueName, 30, 8)) 
< 
CLng(Format(Now(), "yyyymmdd")) 

你會必須檢查您的多維數據集中顯示的CurrentMember.UniqueName以適應上述代碼。

最後,你當然也可以使用字符串的方法來提取從UniqueName的相關部分,然後在該CDate功能比較不變Now(),我。即請執行<左側的所有操作。

1

你好,非常感謝你的回答。我試過了:

Mid([Work Item].[xxxx_PlannedWeek__HierarchyByWeek].CurrentMember.UniqueName,58,10) 

顯示例如: 2013年7月21日,2013年7月28日(它顯示了一週的結局)

所以我嘗試這樣的:

AND CLng(Mid([Work Item].[xxxx_PlannedWeek__HierarchyByWeek].CurrentMember.UniqueName,58,10)) 
<CLng(Format(Now(), "yyyy-mm-dd")) 

但它偏偏不信邪。如果我以單一方式執行它,它顯示無處不在「真實」。但是我的數據集的日期是例如> 2013-08-23。所以也應該有錯誤的價值。

編輯:好的我解決了這個問題。該

Format(Now(), "yyyy-mm-dd") 

必須

Format(Now(), "yyyy-MM-dd") 
+0

高興你發現了它。 – FrankPl