处理因MDX Script错误而失败

时间:2015-03-23 10:56:25

标签: mdx

我在MDX中有表达

    Filter
    (
      {
        [ ORDER ACTUAL].[Actual  Hours Flag].&[Y]
       ,[MAINT  D].[Preventive  Flag].&[Y]
      }
     ,[Measures].[No of  Orders]
    )
  / 
    [Measures].[No of  Orders]
* 100

我收到以下错误:

  

处理因MDX Script错误而失败

2 个答案:

答案 0 :(得分:2)

其中一个结束支架丢失,但我猜这不是问题。考虑到你的表达是:

 filter (
 {[ ORDER ACTUAL].[Actual  Hours Flag].&[Y] ,  [MAINT  D].[Preventive  Flag].&[Y]} 
 ,[Measures].[No of  Orders])/[Measures].[No of  Orders]* 100)

您的代码失败了,因为您试图将同一组中不同层次结构的成员捆绑在一起。 ,在MDX中是不允许的。 (花括号,或{}代表一组)。你需要的是:

 filter (
 ([ ORDER ACTUAL].[Actual  Hours Flag].&[Y] ,  [MAINT  D].[Preventive  Flag].&[Y]) 
 ,[Measures].[No of  Orders])/[Measures].[No of  Orders]* 100)

这应该有效。

答案 1 :(得分:1)

你真的想使用filter还是只是在非空的元组之后?我问的原因是你的过滤器的第二个参数不是布尔条件,所以我猜你只想要非空元组,如下所示:

    NonEmpty
    (
      (
        [ ORDER ACTUAL].[Actual  Hours Flag].&[Y]
       ,[MAINT  D].[Preventive  Flag].&[Y]
      )
     ,[Measures].[No of  Orders]
    )
  / 
    [Measures].[No of  Orders]
* 100

如果您需要使用Filter函数,则语法更像如下:

Filter
(
  (
    [ ORDER ACTUAL].[Actual  Hours Flag].&[Y]
   ,[MAINT  D].[Preventive  Flag].&[Y]
  )
 ,[Measures].[No of  Orders] > 0  //<<< a Boolean (e.g. =/<>/>/<) condition is here
)

/     [措施]。[订单号] * 100