mdx datediff错误

时间:2012-09-26 15:34:31

标签: sql ssas mdx datediff

select measures.name on 0,
datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value) on 1
from cube
  

错误:执行托管存储过程datediff失败了   以下错误:目标抛出了异常   invocation.Argument'Date1'无法转换为'Date'类型

有没有要求在mdx中使用datediff? 在维度中,这些成员被定义为日期时间,不确定这是否影响结果......

更新:我通过在数据源视图和多维数据集上进行计算解决了这个问题,我添加了一个可以在MDX中使用的度量来创建我需要的指标。当然,这都是使用SSAS来测试结果,而使用SSDT来创建成员。我希望这种方法可以帮助很多人,即使我不知道这是否是最好的情况。快乐的MDX;)

2 个答案:

答案 0 :(得分:0)

默认情况下,轴将显示而不是member_value,但会显示成员名称,该名称始终为字符串。 Member_Value是一种衡量标准。

With Member MyDateDiff as
  datediff("d", [Fecha].[Date].currentmember.member_value, [Dim Date].[Date].currentmember.member_value)
Select 
  (Measures.MyDateDiff, Measures.Name) on 0
  (Fecha.Date.Members, [Dim Date].[Date].Members) on 1
From cube

修改

我对此也很陌生,但在你的评论之后,我认为我应该详细说明我为了获得类似的查询而经历的流程。

首先,确保您获得自己认为的数据。将这些Member_Value度量值放入Columns维度:

With 
  Member FechaDate as
      [Fecha].[Date].currentmember.member_value
  Member MyDate as
      [Dim Date].[Date].currentmember.member_value
Select 
      (Measures.FechaDate, Measures.MyDate) on 0
      (Fecha.Date.Members, [Dim Date].[Date].Members) on 1
From cube

您是否收到日期值?如果是,请尝试您的约会功能。如果没有,请检查维度定义。我不会惊讶地发现你的一个属性的ValueColumn被设置为关键字段而不是日期值字段,或者其他一些东西。

答案 1 :(得分:0)

您可能需要两个步骤,但日期添加方法应该没问题。 Bill的成员方法很好,但它将其作为字符串返回,而不是日期对象。如果它的格式正确,您应该能够:

Member MyDate as
DATEDADD("d", 1, VBAMDX!CDate([Dim Date].[Date].currentmember.member_value))

根据您的日期字符串最终格式化的方式,您可能还需要做更多的工作。