代码之家  ›  专栏  ›  技术社区  ›  Tim C

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

mdx
  •  3
  • Tim C  · 技术社区  · 16 年前

    在我使用的一个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 回复  |  直到 8 年前
        1
  •  5
  •   Santiago Cepas    16 年前
    DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)
    
        2
  •  2
  •   Magnus Smith    16 年前

    您需要的命令是后代。记住“家族树”的类比,您可以看到,这将列出一个成员的后代,尽可能低。

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

    你可以用第三个参数指定一些奇怪的选项,你需要在后面加上“self”和“u”,参见 http://msdn.microsoft.com/en-us/library/ms146075.aspx

    编辑-哦,正如SantiIII注意到的,它应该是以前的“自我”和“自我”。