测试成员是否存在于维度中
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]
;
这应该很简单,我只是不知道该怎么做。
我正在计算一个度量,它在时间维度中使用 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]
;