SSAS使用层次结构而不将其放在选择中

时间:2012-04-18 15:16:56

标签: ssas olap

我们在时间维度中有一个层次结构,我们尝试使用维度的层次结构获取一些数据,但我们不希望将层次结构放在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 units]上的47271和last_month上的51103

2011年3月:[ims units]上的55293和last_month上的47271

但是如果我添加了be子句并删除了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 units]上的55293,以及last_month上的null

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

谢谢, 旧金山

1 个答案:

答案 0 :(得分:0)

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

相关问题