子函数返回成员的集合。 但我需要几个成员的孩子。
问题是,我不能使用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的想法,除了父母,所以稍微清理一下这个列表。
希望这是可以理解的。
答案 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]
)
请注意,此查询完全未经测试。我也可能失去了一些技能,因为我已经有一段时间了,因为我使用了mdx。您还必须动态创建查询,因为选择似乎取决于用户。但我相信你已经意识到了这一点。 ;)