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 units] で 47271、last_month で 51103

2011 年 3 月: [ims units] で 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 units] で 55293、last_month で null

時間ディメンションでフィルター処理されているため、last_month には null があります。select 句と where 句のいずれかに階層を配置せずに、parallelperiod 関数を使用せずに先月を取得する方法はありますか? (ParallelPeriod の使用は単なる例です)

ありがとう、フランシスコ

4

1 に答える 1

0

計算メンバーで時間ディメンションを参照する場合は、コンテキストが必要です。コンテキストは、行、列、WHERE句、または計算式で明示的に指定したものから取得されます。並列期間、または別の時点(行、列、またはWHERE句に表示される)との相対的な時点を決定する関数を計算するために、式が開始点を知る方法は他にありません。

于 2012-07-18T20:56:28.290 に答える