维度成员的条件分组

conditional grouping of dimension members

我正在努力解决查询中某些成员的条件分组问题。

在我的简化示例中,我有两个维度和一个度量。第一维包含一些类别,第二维包含一些单位。在除一个类别之外的所有类别中,所有类别都有一个单位(示例中的类别 A 和 B)。但是,一个类别有多个单位。如果我将两个维度都放在行上,我会得到类别 C 的多个结果(如以下示例所示)。我真正需要的是为每个类别获取一行,适当聚合金额,但也显示单位(在类别 C 的情况下,应将它们替换为单个 "none" 或连接在一起,如果这是不可能的(示例中的"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 如下:

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

也许这真的很简单,但我已经尝试解决了一段时间但没有结果。

如有任何想法,我们将不胜感激。

谢谢。

不简单。 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]