2012-04-18 8 views
1

時間ディメンションに階層があり、ディメンションの階層を使用してデータを取得しようとしますが、階層をwhere句に入れたくありません。具体的には、SSAS選択を行わずに階層を使用

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月:55293 [IMS上:[IMS単位]と、last_month

2011年3月に51103に47271単位]と、last_month

上の47271しかし、私はインクルードを追加した場合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月:55293 last_month

の[IMS単位]と、ヌルにそれは時間ディメンションを濾過されたので、私たちはlast_monthにヌルを持っています。 最後の月にselect句に階層を置くことなく、where節とparallelperiod関数を使用しないで取得する方法はありますか? (PARALLELPERIODの使用は単なる一例である)

おかげで、 フランシスコは

答えて

0

あなたが計算されるメンバーで時間ディメンションを参照しようとしている場合、それは文脈が必要です - あなたが持っているものは何でもから来ることを行っています行、列、WHERE句、または計算式で明示的に指定したものです。並列的な期間を計算するための出発点、または別のもの(行、列、またはWHERE句に表示される)との相対的な時点を決定する関数は、式が他の方法で知ることはできません。

関連する問題