多个成员的MDX儿童

时间:2014-01-16 10:45:03

标签: function union mdx member children

子函数返回成员的集合。 但我需要几个成员的孩子。

问题是,我不能使用Union来使它像那样工作:

Union([Geography].[Geography].[USA].children,[Geography].[Geography].[Canada].children)

我不知道会有多少成员......所以我实际上需要一群成员的所有孩子。

像:

([Geography].[Geography].[USA],[Geography].[Geography].[Canada],[Geography].[Geography].[GB]).children

有这样的功能吗?


我无法回答我的问题所以我只是编辑它。在DHN的回答和一些大脑工作的帮助下,我找到了一个可以使用的解决方案:

Except(DRILLDOWNLEVEL( {[Geography].[Geography].[USA],[Geography].[Geography].[Canada]},,0 ),
{[Geography].[Geography].[USA],[Geography].[Geography].[Canada]})

这对我有用。 说明:我深入了解工具提供给我的元素,它返回子元素和父母,然后我使用DHN的想法,除了父母,所以稍微清理一下这个列表。

希望这是可以理解的。

2 个答案:

答案 0 :(得分:4)

您可以使用Descendants method(链接描述的第四种形式使用集合作为其第一个参数。因此,

Descendants( { 
             [Geography].[Geography].[USA],
             [Geography].[Geography].[Canada],
             [Geography].[Geography].[GB]
             },
             1,
             SELF
           )

应该准确地提供你想要的东西。

答案 1 :(得分:0)

实际上,您可以使用Crossjoin来获取所需的设置。

这样的东西
[Geography].[Geography].[USA] * [Geography].[Geography].[Canada] * [Geography].[Geography].[GB]

但如果您只有几个不同的搜索条件,这只是一个合适的解决方案。

或者,您可以使用Except删除您不感兴趣的条件。例如

Except([Geography].[Geography].children, [Geography].[Geography].[Germany])

除了[Geography]之外,这将为您提供[Germany]维度的全部内容。

希望这有点帮助。

在评论TO后

进行修改

好的,这不是你问题的一部分,但我认为你需要的是MemberToStr()功能。请找到文档here

我觉得这样的事情可以解决问题。

with   member [Measures].[Cities]
as     membertostr([Geography].[Geography].members.children)
select [Measures].[Cities] on 0
from   [WhatEverYourCubeNameIs]    
where  (
    [Geography].[Geography].[USA],
    [Geography].[Geography].[Canada]
)

请注意,此查询完全未经测试。我也可能失去了一些技能,因为我已经有一段时间了,因为我使用了。您还必须动态创建查询,因为选择似乎取决于用户。但我相信你已经意识到了这一点。 ;)