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

错误:托管存储过程 datediff 的执行失败,出现以下错误:调用的目标已引发异常。参数“Date1”无法转换为“日期”类型

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

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

4

2 回答 2

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

你得到日期值了吗?如果是,试试你的 datediff 函数。如果不是,请检查尺寸定义。发现您的一个属性的 ValueColumn 被设置为键字段而不是日期值字段或类似的东西,我不会感到惊讶。

于 2012-09-26T19:05:35.087 回答
0

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

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

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

于 2012-09-28T08:12:28.407 回答