MDX-在叶lvl处求和一个度量值,其中叶lvl处存在另一个度量值

MDX-在叶lvl处求和一个度量值,其中叶lvl处存在另一个度量值,mdx,Mdx,我需要计算出项目层次结构中任何一级的库存周转率 到目前为止,计算值为过去3个月的总和[COGS]*4除以[SOH](SOH值) 下面的代码嵌入到BI工具中,可以正常工作。它位于项目网格中,并在显示级别为项目维度中的每个成员过滤: (({.lag(3):.lag(1)},([Type].[Type].[Actual],[Measures].[Cogs]))*4)/ ([Type]。[Type]。[Actual],[Measures]。[SOH],) 它需要更改/添加的只是返回[COGS]度量值有值

我需要计算出项目层次结构中任何一级的库存周转率

到目前为止,计算值为过去3个月的总和[COGS]*4除以[SOH](SOH值)

下面的代码嵌入到BI工具中,可以正常工作。它位于项目网格中,并在显示级别为项目维度中的每个成员过滤: (({.lag(3):.lag(1)},([Type].[Type].[Actual],[Measures].[Cogs]))*4)/ ([Type]。[Type]。[Actual],[Measures]。[SOH],)

它需要更改/添加的只是返回[COGS]度量值有值的项目的[SOH]。 因此,如果我有没有齿轮的项目,则不包括它们:

项目 SOH 齿轮 A. 10 20 B 15 40 C 20
假设您使用的是SSAS 2012或更新版本,最简单的方法是使用
Divide
而不是除法运算符
/

Divide( ((SUM({.lag(3):.lag(1)}, ([Type].[Type].[Actual], [Measures].[Cogs]))) * 4),
        ([Type].[Type].[Actual], [Measures].[SOH], )
      )
当除以零或NULL时,返回
NULL
(空值),而不是无穷大

编辑:我知道您希望避免将分子计算为null或0,而不是分母。在本例中,您将使用
Iif

IIF((SUM({.lag(3):.lag(1)}, ([Type].[Type].[Actual], [Measures].[Cogs])) <> 0,
    ((SUM({.lag(3):.lag(1)}, ([Type].[Type].[Actual], [Measures].[Cogs]))) * 4)
    /
    ([Type].[Type].[Actual], [Measures].[SOH], )
   , NULL)
IIF((和({.lag(3):.lag(1)},([Type].[Type].[Actual],[Measures].[Cogs])0,
(({.lag(3):.lag(1)},([Type].[Type].[Actual],[Measures].[Cogs]))*4)
/
([Type]。[Type]。[Actual],[Measures]。[SOH],)
,空)
是一个具有三个参数的函数,一个条件、条件为真时要使用的值以及条件为假时要使用的条件