基于来自相同维度的第二属性对层次结构的一部分求和

时间:2017-06-01 09:50:14

标签: ssas mdx hierarchy olap

所以我的这个维度有一个粗糙的层次结构。层次结构非常适合导航,但是要搜索一个皇家的痛苦(Excel是前端,所以你必须手动搜索所有12个左右的级别)。

我们创建了一个单独的“搜索”属性,其中包含要搜索的层次结构的所有成员 - 但是,在此平面列表中,树叶将包含正确的数据,但中间节点当然不会被卷起(缺少分层信息)

我的想法是在平面列表中放置一个公式,以便在层次结构中查找其等效成员并从中获取其值。 这就是我所拥有的 - 不幸的是,这两种方法都不起作用:

With

------ APPROACH 1: DESCENDANTS
Member [m1] As
Sum(
Descendants(
  Filter(
      [Dimension].[Hierarchy].Members
    , [Dimension].[Hierarchy].Properties("Key") = 
        [Dimension].[Flat List].CurrentMember.Properties("Key")
  ),, LEAVES), ([Measure].[MeasureHierarchy].CurrentMember, [Measures].[Amount]))


------- APPROACH 2: StrToMember + CHILDREN
Member [m2] As
Sum(
  StrToMember("[Dimension].[Hierarchy].&["+
    [Dimension].[Flat List].CurrentMember.Properties("Key")+
    "]").Children,
  ([Measure].[MeasureHierarchy].CurrentMember, [Measures].[Amount])
)

Select

{ [m1], [m2] }
On 0,

[Dimension].[Flat List].&[838]
  dimension properties member_key
On 1

From [Cube]
Where [Measure].[MeasureHierarchy].[SomeMeasure]

两者都将始终返回null - 如果我直接查询Hierarchy,它可以工作 - 如果我使用平面列表则不行 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

自己想出来 - 今晚有灵感的火花:-D

答案很简单:

with member
[m1] as
(
  StrToMember("[Dimension].[Hierarchy].&["+
    [Dimension].[Flat List].CurrentMember.Properties("Key")+
    "]")
  , [Dimension].[Flat List].[All]
)

...

也许这对其他人也有帮助