【问题标题】:Getting getdate(), datediff in SSAS (MDX) query在 SSAS (MDX) 查询中获取 getdate()、datediff
【发布时间】:2017-07-03 09:05:15
【问题描述】:

我们有一个如下所示的 MDX 查询:

WITH Member [Measures].[Z] AS (DATEADD("H",-1,[X].[Y].Member_Caption)) 
SELECT { [X].[Y].Children } ON Rows,
       { [Measures].[Z] } ON Columns
FROM ABC

它基本上返回 Datetime (LastRefresh)。

我的任务是创建一个返回以下列的 MDX 查询:

LastRefresh, Getdate(), datediff(Mins, LastRefresh, Getdate())

其等效的 SQL 查询为:

select LastRefresh, getdate() as CurrentDate, datediff(Mins, LastRefresh, getdate()) as DateDifference from XYZ

如何在 MDX on the Cube 中做同样的事情?

注意:

我们不能创建任何新的度量,因为我们只是使用 Cube 来获取数据,并且没有任何类型的访问来创建度量等。

【问题讨论】:

  • 您的问题是什么?我在任何地方都看不到问号。
  • 我们需要模仿mdx中的SQL查询
  • LastRefresh 不能通过 mdx 针对多维数据集使用(除非您在某处添加了 Last Refresh 成员?!)
  • 我们有 lastRefreshMember,我想要 getdate() 和差异在同一个
  • [X].[Y].Children 这给出了 lastrefresh

标签: sql ssas mdx ssas-tabular ssas-2012


【解决方案1】:

GETDATE()是SQL函数,但是你写的是MDX,所以不可以。

如果您使用的是 Microsoft SSAS,则在 MDX 中允许使用 VBA,您可以使用 Now() 返回当前日期和时间。

使用DateDiff 的VBA 格式(不是SQL 版本!),您可以通过这种方式进行计算。您可能需要CDate() 将成员名称的字符串值转换为日期对象以供 VBA 使用。比如……

DateDiff("d", CDate([X].[Y].MemberName), Now())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多