2017-06-22 42 views
1

這應該很簡單,我只是無法弄清楚如何去做。測試成員是否存在於維度

我正在做一個計算的度量,它使用時間維度中的PrevMember。如果[Time dimension] .CurrentMember沒有PrevMember,我想顯示NULL。

我只是不能弄清楚這個成員表達式要包裝什麼來表明「這個成員實際上是否存在?」。我對這個.PrevMember(即EXISTING或EXISTS)是否存在某個特定的措施不感興趣。我不想引用度量維度 - 只是測試[時間維度] .CurrentMember.PrevMember是否在維度內返回任何成員。

EDIT 所討論的計算的量度是

([此本期完成] -PriorPeriod)/ PriorPeriod

所以想要抓住情況下,有沒有前一期間(在的每一級時間層次結構)並強制結果爲0而不是得到某種(div/0?)錯誤。

+0

也許測試CurrentMember是否處於維所述第一構件(如果​​它是第一個它不能有PrevMember)。或者即使CurrentMember.PrevMember爲null也應該這樣做。 –

回答

2

這會產生0,其中CurrentMember沒有以前的成員,在所有水平。

WITH MEMBER [Measures].[ThisPeriod] AS 3 
    MEMBER [Measures].[PriorPeriod] AS 2 
    MEMBER [Measures].[NewMeasure] AS 
IIF([Date].[Calendar].CURRENTMEMBER.PREVMEMBER IS NULL,0,[Measures].[ThisPeriod] - [Measures].[PriorPeriod]) 
SELECT 
    {[Measures].[ThisPeriod], [Measures].[PriorPeriod], [Measures].[NewMeasure]} ON COLUMNS 
, [Date].[Calendar].MEMBERS ON ROWS 
FROM 
    [Adventure Works] 
    ; 

enter image description here

1

不確定你需要做什麼 - 如果沒有以前的成員,那麼null將只是返回無論如何?

WITH 
    MEMBER Measures.[CalendarPrevious] AS 
    [Date].Calendar.CurrentMember.PrevMember.Member_Caption 
    MEMBER Measures.[CalendarPrevious2] AS 
    IIF 
    (
     Count({[Date].Calendar.CurrentMember.PrevMember}) = 1 
    ,[Date].Calendar.CurrentMember.PrevMember.Member_Caption 
    ,null 
    ) 
SELECT 
    NON EMPTY 
    { 
     Measures.[CalendarPrevious] 
    ,Measures.[CalendarPrevious2] 
    } ON 0 
,[Date].[Calendar].[Date].MEMBERS ON 1 
FROM [Adventure Works]; 

返回:

enter image description here

爲了對抗格錯誤,我一般都用這個模式:

MEMBER [Date].[Date - Calendar Month].[All].[DlyAvgGrowth] AS 
    IIF 
    (
     [Date].[Date - Calendar Month].[All].[PrevMth_DlyAvg] = 0 
    ,NULL 
    ,Divide 
     (
      [Date].[Date - Calendar Month].[All].[CurrentMth_DlyAvg] 
     - 
      [Date].[Date - Calendar Month].[All].[PrevMth_DlyAvg] 
     ,[Date].[Date - Calendar Month].[All].[PrevMth_DlyAvg] 
    ) 
    ) 
+0

比這更復雜。編輯問題澄清。 – SebTHU

+0

爲什麼你的測量會產生div/0錯誤?這似乎是一種減去另一種的措施。我認爲如果其中一個是NULL,它將返回NULL。 –

+0

@ TheDumbRadish:對不起,編輯器自動將我的編輯插入某種超鏈接,所以不清楚它是(CurrentPeriod-PriorPeriod)/ PriorPeriod。修復它與另一個編輯。 – SebTHU