2013-08-19 119 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