维度成员的条件分组

时间:2017-11-24 16:06:02

标签: ssas mdx

我在查询中对某些成员的条件分组进行了挣扎。

在我的简化示例中,我有两个维度和一个度量。第一维包含一些类别,第二维包含一些单元。除了一个类别外,所有类别都有一个单元(示例中为A类和B类)。但是,一个类别有多个单位。如果我将两个维度放在行上,我会得到C类的多个结果(如下例所示)。我真正需要的是每个类别获得一行,Amount适当地聚合,但也与显示的单位一起使用(在C类的情况下,它们应该由单个&#34替换;没有"或者如果这样连接在一起是不可能的(" km,kg"在示例中))。

以下示例应说明我要实现的目标。

使用以下查询:

    SELECT 
          NON EMPTY { [Measures].[Amount] } ON COLUMNS, 
          NON EMPTY { ([Grouping A].[Category].[Category].ALLMEMBERS * 
                       [Grouping B].[Unit].[Unit].ALLMEMBERS ) } ON ROWS 
    FROM [ExampleCube]  

我得到这样的数据:

Category     Unit     Amount
A            km         10
B            km         5
C            km         5
C            kg         2
C            km         5  

但我真正需要实现的是对维度类别进行分组并对维度单位进行适当处理,并按如下方式对数量进行适当处理:

Category     Unit     Amount
A            km         10
B            km         5
C            none       12

也许这很简单,但我一直试图解决这个问题,但没有结果。

任何想法都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

这并不简单。 OLAP并非专为此类设计而设计。 尽管如此,您可以通过以下方式解决它:

With 
[Measures].[Unit] as 
IIF(
    NonEmpty(
        [Grouping B].[Unit].[Unit].Members,
        [Measures].[Amount]
    ).Count > 1,
    "None",
    NonEmpty(
        [Grouping B].[Unit].[Unit].Members,
        [Measures].[Amount]
    ).Item(0).Name
)


Select
Non Empty { [Measures].[Unit],[Measures].[Amount] } on 0,
Non Empty { [Grouping A].[Category].[Category].Members } on 1
From [ExampleCube]