2017-06-22 5 views
1

これは単純なはずです。私はそれを行う方法を理解できません。メンバがディメンションに存在するかどうかをテストします

私は、時間ディメンションでPrevMemberを使用する計算メジャーを作成しています。 [Time dimension] .CurrentMemberにPrevMemberがない場合、NULLを表示したいと思います。

"このメンバーは実際に存在していますか?"という言い方をするために、このメンバー表現をどのように囲むべきなのか分かりません。私は、このプレブメンブレンに対して特定の尺度が存在するかどうかには関心がありません(つまり、既存または存在)。私はメジャーディメンションを参照したくありません。[Timeディメンション] .CurrentMember.PrevMemberがディメンション内でメンバーを返すかどうかをテストするだけです。問題の

EDIT 算出された指標は、私がのあらゆるレベルで事前の期間が存在しない場合を(キャッチしたい([ThisPeriod] -PriorPeriod)/ PriorPeriod

です何らかの種類(div/0?)のエラーを取得するのではなく、結果を0に強制します。

+0

おそらくCURRENTMEMBERは(それが最初である場合、それはPrevMemberを持つことができない)寸法の最初のメンバーであるかどうかをテストします。または、CurrentMember.PrevMemberがnullであってもそれを実行する必要があります。 –

答えて

2

これはCURRENTMEMBERがすべてで、前のメンバーを持っていない0を生成レベル。

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

私は、一般的にこのパターンを使用するのdivエラーを戦うために:

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エラーを生成する理由は何ですか?それは1つの尺度から別の尺度までのようです。私はそれらの1つがNULLの場合はNULLを返すと思います。 –

+0

@TheDumbRadish:申し訳ありませんが、エディタはハイパーリンクのようなものに私の編集を自動でボークしたので、(CurrentPeriod-PriorPeriod)/ PriorPeriodであることは明らかではありませんでした。別の編集で修正しました。 – SebTHU

関連する問題