IcCube - 在MDX查询中获取昨天的成员

时间:2016-07-28 09:56:10

标签: mdx iccube

我的日期维度看起来像[date].[date].[day].[yyyy-MM-dd],我想让昨天的成员代表[date].[date].[day].[2016-07-27]。我怎样才能做到这一点。

在一些关于MDX的线程中,但不是特定于IcCube的,它是这样编写的:
1. STRTOMEMBER("[date].[date].[day].["+ FORMAT(NOW()-1,"yyyy-MM-dd") +"]")
2. STRTOMEMBER("[date].[date].[day].["+ VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd") +"]")

第一个解决方案会抛出一个错误,说明“未知函数”格式'并且第二个解决方案中的错误读取"" VBAMDX.NOW()"期待一个参数" index"'。如果我只用NOW替换VBAMDX.NOW,VBAMDX.FORMAT也是如此。 但是所有解释VBAMDX的页面都有两个FORMAT参数,而NOW只有两个参数...

2 个答案:

答案 0 :(得分:3)

我想这是因为不支持Excel FORMAT(在最新版本的icCube中改进了错误报告)。相反,我会使用此page中提到的函数:

StrToMember( "[Time].[Calendar].[Day].&["+ DateToString( NOW()-1,"yyyy-MM-dd") +"]")

但是在icCube中你有LookupByKey功能,如果你的密钥是日期,这是一个更强大的解决方案:

LookupByKey( [Time].[Calendar].[Day],  Now() )

或者如果您需要约会:

LookupByKey( [Time].[Calendar].[Day],  Today() )

您可以使用功能(doc)轻松导航日期。

希望有所帮助。

答案 1 :(得分:0)

MsiGetFileSignatureInformation导致错误-1

因此,删除NOW并添加一个-1的以下内容可能会有效吗?

LAG

我刚注意到您在代码中遗漏了会员名称最后一部分方括号前面的&符号,因此请尝试以下操作之一:

STRTOMEMBER("[date].[date].[day].["+ VBAMDX.FORMAT(VBAMDX.NOW(),"yyyy-MM-dd") +"]").LAG(1)

STRTOMEMBER("[date].[date].[day].&["+ FORMAT(NOW()-1,"yyyy-MM-dd") +"]")

如果您尝试这3项措施,它们都会失败吗?

STRTOMEMBER("[date].[date].[day].&["+ VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd") +"]")