iCube-获取昨天&x27;MDX查询中的s成员

iCube-获取昨天&x27;MDX查询中的s成员,mdx,iccube,Mdx,Iccube,我有一个日期维度,看起来像这样[Date].[Date].[day].[yyyy-MM-dd],我想得到代表昨天的成员,即[Date].[Date].[day].[2016-07-27]。我怎样才能做到这一点 在一些关于MDX的线程中,但不是特定于IcCube的,它是这样写的: 1. STRTOMEMBER(“[date].[date].[day].[”+格式(NOW()-1,“yyyy-MM-dd”)+“])” 2. STRTOMEMBER(“[date].[date].[day].[”+VB

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

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

第一个解决方案抛出一个声明“未知函数格式”的错误,第二个解决方案中的错误为“VBAMDX.NOW()”需要一个参数“index”。如果将VBAMDX.NOW替换为NOW,则VBAMDX.FORMAT也是如此。
但是解释VBAMDX的所有页面都有两个格式参数,目前没有…

-1
导致
现在的错误吗

那么,下面删除
-1
并添加一个
滞后
的方法是否可行

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

我刚刚注意到,在您的代码中,在成员名称最后一部分的方括号前缺少一个与号,因此请尝试以下操作之一:

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


如果你尝试这三种方法,它们都失败了吗

WITH
  MEMBER [Measures].[Today1] AS 
    VBAMDX.NOW() 
  MEMBER [Measures].[Today2] AS 
    VBAMDX.NOW()-1
  MEMBER [Measures].[Today3] AS 
    VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd")
...

我想这是因为Excel格式不受支持(最新版本的icCube改进了错误报告)。相反,我将使用本文中提到的函数:


但在icCube中,如果您的密钥是日期,则该函数是一个更健壮的解决方案:

LookupByKey( [Time].[Calendar].[Day],  Now() )
或者,如果您需要日期:

LookupByKey( [Time].[Calendar].[Day],  Today() )
您可以使用函数()轻松导航日期


希望有帮助。

仍然是相同的错误:“语法错误:隐式Item()函数调用(应用于:语法错误:隐式Item()函数调用(应用于:VBAMDX.NOW)需要一个(索引)参数:没有参数。)需要一个(索引)参数:没有参数。”--此外,如果今天的成员不存在,lag()也没有帮助…@UlrichWuenstel我认为您的代码中可能缺少一个
&
符号-请参阅我的答案中的添加。不幸的是,这与问题无关。该错误指出,函数VBAMDX.NOW()需要一个参数,但我不知道是什么。这似乎是IcCube固有的问题。请检查LookupByKey函数,这是一个更好的选择
LookupByKey( [Time].[Calendar].[Day],  Now() )
LookupByKey( [Time].[Calendar].[Day],  Today() )