1

我们在时间维度中有一个层次结构,我们尝试使用维度的层次结构获取一些数据,但我们不想将层次结构放在 where 子句中。这是代码:

with

member Measures.last_month as   
        sum(
        ParallelPeriod(
                [TIME].[Periods].[Level 06],1
        ), 
        [Ims Units])
select 

    {[Ims Units],last_month} on columns,
     [TIME].[Periods].[Level 06].members on rows
from [Analyzer cube]

它返回所有月份,特别是:

2011 年 2 月:[ims 单位] 为 47271,last_month 为 51103

2011 年 3 月:[ims 单位] 为 55293,last_month 为 47271

但是,如果我添加 were 子句并删除 select 子句中的层次结构:

with

member Measures.last_month as   
        sum(
        ParallelPeriod(
                [TIME].[Periods].[Level 06],1
        ), 
        [Ims Units])
select 
    {[Ims Units],last_month} on columns
from [Analyzer cube]
where [TIME].[MONTH NAME].&[201103 March]

表明:

2011 年 3 月:[ims 单位] 为 55293,last_month 为空

我们在 last_month 上有空值,因为它已经被过滤了时间维度。有没有办法在不将层次结构放在 select 子句和 where 子句上并且仍然使用 parallelperiod 函数的情况下获得上个月?(ParallelPeriod 的使用只是一个例子)

谢谢,弗朗西斯科

4

1 回答 1

0

如果要在计算成员中引用时间维度,它需要上下文 - 这将来自行、列、WHERE 子句或您在计算表达式中明确指定的任何内容。没有其他方法可以让表达式知道它的起点是什么,以便计算并行周期,或任何确定相对于另一个时间点的时间点(出现在行、列或 WHERE 子句上)的函数。

于 2012-07-18T20:56:28.290 回答