测试成员是否存在于维度中

Test whether member exists in dimension

这应该很简单,我只是不知道该怎么做。

我正在计算一个度量,它在时间维度中使用 PrevMember。如果[时间维度].CurrentMember 没有 PrevMember.

,我想显示 NULL

我只是不知道该用什么来表示这个成员表达式 "does this member actually exist?"。我对是否存在针对此 .PrevMember 的特定措施(即 EXISTING 或 EXISTS)不感兴趣。我不想引用度量维度 - 只是测试 [Time 维度].CurrentMember.PrevMember returns 维度中是否有任何成员。

编辑 有问题的计算度量是

([ThisPeriod]-PriorPeriod)/PriorPeriod

所以我想捕捉没有前期(在时间层次结构的每个级别)的情况,并将结果强制为 0 而不是出现某种(div/0?)错误。

不确定您需要做什么 - 如果没有以前的成员,那么 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];

Returns:

为了对抗 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,其中 CurrentMember 在所有级别都没有 Previous Member。

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]
    ;