Ssas MDX表达式错误

Ssas MDX表达式错误,ssas,mdx,Ssas,Mdx,我有以下表达式MDX: isnull([Measures].[Available Hours],0) 处理多维数据集后,我在报告中出现以下错误: 未找到存储过程的适当重载函数 。参数不正确。托管服务器的MdxScript执行 存储过程isnull失败,错误如下:Microsoft AnalysisServices AdomdServer AdomdException 如何解决此错误?isnull不是mdx函数 要在mdx中测试null,请尝试使用iif iif( [Measures]

我有以下表达式MDX:

isnull([Measures].[Available Hours],0)
处理多维数据集后,我在报告中出现以下错误:

未找到存储过程的适当重载函数 。参数不正确。托管服务器的MdxScript执行 存储过程isnull失败,错误如下:Microsoft AnalysisServices AdomdServer AdomdException


如何解决此错误?

isnull
不是
mdx
函数

要在
mdx
中测试
null
,请尝试使用
iif

 iif(  
  [Measures].[Available Hours] = 0,
  0,
  [Measures].[Available Hours]
 )
它看起来有点奇怪,因为我们寻找0,然后如果它是0,将其更改为0

但这里有一个例子:

WITH 
  MEMBER [Measures].[Internet Sales Amount 2] AS 
    IIF
    (
      [Measures].[Internet Sales Amount] = 0
     ,0
     ,[Measures].[Internet Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Internet Sales Amount 2]
  } ON 0
 ,
    [Customer].[Customer Geography].[Country].MEMBERS
  * 
    [Product].[Category].MEMBERS ON 1
FROM [Adventure Works];
情况就是这样:


编辑

@MarcPolizzi的Alternative做了同样的事情,他的代码更紧凑:

WITH 
  MEMBER [Measures].[Internet Sales Amount 2] AS 
    IIF
    (
      [Measures].[Internet Sales Amount] = 0
     ,0
     ,[Measures].[Internet Sales Amount]
    ) 
  MEMBER [Measures].[Internet Sales Amount 3] AS 
    CoalesceEmpty
    (
      [Measures].[Internet Sales Amount]
     ,0
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Internet Sales Amount 2]
   ,[Measures].[Internet Sales Amount 3]
  } ON 0
 ,
    [Customer].[Customer Geography].[Country].MEMBERS
  * 
    [Product].[Category].MEMBERS ON 1
FROM [Adventure Works];
您可以使用该函数替换空/空值。要将其替换为0值,可以执行以下操作:

CoalesceEmpty([Measures].[Available Hours], 0)

希望有帮助。

哪一个更快
合并空(…)
还是
IIF(x=0,0,x)
?我知道这两种方法都不推荐,因为它们都去除了空值,这不利于稀疏块模式计算:但如果被迫使用其中一种方法,则速度更快?对不起,不知道SSA;对于icCube,应该是类似的。