在MDX中列出成员及其所有后代的最佳方法是什么?

时间:2008-09-29 08:34:20

标签: mdx

在我使用的OLAP数据库中,有一个“位置”层次结构,包括公司,区域,区域,站点,房间,等级。对于某个特定公司,我需要编写一些列出所有地区,区域和站点的MDX(但不包括站点下面的任何级别)。目前我正在通过以下MDX实现这一目标

HIERARCHIZE({
[Location].[Test Company], 
Descendants([Location].[Test Company], [Location].[Region]), 
Descendants([Location].[Test Company], [Location].[Area]), 
Descendants([Location].[Test Company], [Location].[Site])
})

因为我对MDX的了解有限,我想知道是否有一种更简单的方法可以做到这一点,用一个命令而不是四个命令?是否有一种不那么冗长的方法来实现这一目标,还是我的榜样是实现这一目标的唯一真正方法?

2 个答案:

答案 0 :(得分:5)

DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)

答案 1 :(得分:2)

您想要的命令是DESCENDANTS。记住'家谱'的类比,你可以看到这将列出成员的后代,尽可能地下载。

您可以指定所选成员的“距离”(在级别中),在您的情况下为3。

您可以使用第三个参数指定一些奇怪的选项,您想要SELF_AND_AFTER,请参阅http://msdn.microsoft.com/en-us/library/ms146075.aspx

编辑 - 哎呀,正如santiiiii注意到的,它应该是SELF_AND_BEFORE