MDX计算的成员不允许多个层次结构元组

时间:2018-05-22 08:22:01

标签: excel ssas mdx olap cube

我使用sql Table为SSAS Cube中的值生成每个维度的过滤器。

SQL Table

MDX查询基于下面的列查询,计算成员是:

@Bean
@Primary
@ConditionalOnClass(weblogic.xml.saaj.MessageFactoryImpl.class)
public SoapMessageFactory messageFactory() {
    return new weblogic.xml.saaj.MessageFactoryImpl();
}

我必须使用Excel中的数据透视表。它完美地工作,值正确地过滤每个维度成员。如果我使用这样的查询,那就没问题。

   AGGREGATE
    (
      IIF(Query= "" or ISEMPTY(Query),
           [Code].[_KeyQuery].[ALL],
           StrToTuple('('+ Query+')')
           ),[Measures].[Value]
    )

但现在我需要添加过滤多维度成员的可能性。例如,使用查询:

[Level].[LevelCode].&[A],[Status].[StatusCode].&[ST]

它不起作用,我尝试更改这样的查询:

[Level].[LevelCode].&[A],[Level].[LevelCode].&[X],[Status].[StatusCode].&[ST]

但StrToTuple()函数会导致错误。我不知道如何为同一维度层次结构过滤多个值。

1 个答案:

答案 0 :(得分:0)

如果它总是一个元组,那么不需要使用AGGREGATE只需要一个元组返回值:

generate-json-webpack-plugin

或者这个版本:

  IIF(
    Query= "" OR ISEMPTY(Query),
    (
      [Code].[_KeyQuery].[ALL]
     ,[Measures].[Value]
    )
   ,StrToTuple('('+ Query +',[Measures].[Value])')
  )

在元组和集合之间做出决定的可能方法

向控制表“TupleOrSet”添加一列,其值为“T”或“S”。然后你可以修改你的代码:

   StrToTuple(
      '('
      + IIF(
          Query= "" OR ISEMPTY(Query)
         ,[Code].[_KeyQuery].[ALL]
         ,Query 
       )
     +',[Measures].[Value])'
    )

注意

元组是立方体空间中的一个确定点,因此不能由同一层次结构中的两个成员组成 - 这将创建非决定性的坐标