计算成员维度组

时间:2014-04-11 13:57:33

标签: sql-server ssas mdx

我对MDX很陌生,所以这可能是一件简单的事情......

我有一个维度,其成员类似于'类型A','类型B','类型C','类型D' 。我想为这些创建维度组,以便:

  • ' A'和' B'将属于A / B'
  • 类型的一组
  • ' C'将在一组C'
  • ' D'会出现在'其他'
  • 的一组中

这是我到目前为止所做的:

WITH MEMBER [NewHierarchy].[Type Group].[Type Group Name] AS
    CASE
        WHEN 
            [Type Hierarchy].[Types].CurrentMember = [Type Hierarchy].[Types].&[Type A]
        THEN
            'Type A/B'
        WHEN 
            [Type Hierarchy].[Types].CurrentMember = [Type Hierarchy].[Types].&[Type B]
        THEN
            'Type A/B'
        WHEN 
            [Type Hierarchy].[Types].CurrentMember = [Type Hierarchy].[Types].&[Type C]
        THEN
            'Type C'
        ELSE
            'Other'
    END

select
    NON EMPTY {
        [Measures].[Type Count],
    } on COLUMNS,
    NON EMPTY {
        [NewHierarchy].[Type Group].[Type Group Name] *
        [Type Hierarchy].[Types].[Types].AllMembers
    } on ROWS
from
    [MyCube]

我收到错误:

  

查询(8,6)维度' [NewHierarchy]'在立方体中找不到   当字符串,[NewHierarchy]。[Type Group]。[Type Group Name]时,是   解析。

如何在MDX查询中完成此操作? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您无法通过MDX生成新的层次结构。但您可以在现有层次结构上定义新成员,如下所示:

WITH Member [Type Hierarchy].[Types].[Type A/B] AS
            Aggregate({
                       [Type Hierarchy].[Types].&[Type A],
                       [Type Hierarchy].[Types].&[Type B]
                     })
     Member [Type Hierarchy].[Types].[Other] AS
            [Type Hierarchy].[Types].&[Type D]
select
    NON EMPTY {
        [Measures].[Type Count],
    } on COLUMNS,
    NON EMPTY {
        [Type Hierarchy].[Types].[Type A/B],
        [Type Hierarchy].[Types].&[Type C],
        [Type Hierarchy].[Types].[Other]
    } on ROWS
from
    [MyCube]  

请注意,如果您想拥有一名成员,则需要在集合上应用Aggregate

另一个评论:永远不要使用=来比较"与"是同一个成员。 =测试当前度量的数值是否相同。您可以使用IS来比较成员身份。