2012-04-18 85 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月:47271上[IMS單位]和51103上LAST_MONTH

2011年3月

:55293上[IMS單位]和47271上LAST_MONTH

但是,如果我加入的是條款和刪除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

:55293上[IMS單位],並在空LAST_MONTH

我們對LAST_MONTH空,因爲它已被過濾的時間維度。 有什麼辦法可以在沒有在select子句上放置層次結構並在where子句中使用parallelperiod函數的情況下獲取上個月的數據? (使用ParallelPeriod的只是一個例子)

感謝, 舊金山

回答

0

如果你要引用時間維度的計算成員,它需要上下文 - 這是從哪兒來不管你有行,列,WHERE子句,或者您在計算表達式中明確指定的任何內容。表達式將不知道它的起點是爲了計算一個並行週期,或者是確定相對於另一個(在行,列或WHERE子句中出現的)時間點的任何函數。