【问题标题】:Search all levels of user hierarchy returning related members from every level搜索所有级别的用户层次结构,从每个级别返回相关成员
【发布时间】:2013-12-24 08:43:50
【问题描述】:

我们有一个带有Dimension [Client] 的hierarchy [Company] - 这个层次结构是多级的,具有三个定义的级别HoldingCompany、Name 和OwnerName。

这是搜索具有这些级别的名称的最有效方法,还是我应该明确命名级别并以某种方式使用OR 运算符?

WITH 
    MEMBER [Measures].[LevelName] AS
        [Client].[Company].Level.Name
    MEMBER [Measures].[LevelNumber] AS
        [Client].[Company].Level.Ordinal
SELECT
    {
    FILTER(
        [Client].[Company].AllMembers,
            (
            InStr(1, [Client].[Company].currentmember.name, "Smith") <> 0
            ) 
        )
    } ON 1,
    {
    [Measures].[LevelName],
    [Measures].[LevelNumber] 
    } ON 0
FROM [ourCube]  

【问题讨论】:

  • 您还可以查看descendants 函数。
  • @mmarie - descendants 函数针对All 级别,而不是使用.AllMembers ?哪个更快?
  • 我不确定您是否可以对 ALLMEMBERS 使用后代。 All 是层次结构中的实际级别。 Allmembers 是一个函数,它返回层次结构中 All 的子级的所有成员。如果使用 allmembers 有效,我猜它会尝试使其针对所有成员的集合而不是单个 All 成员对其进行评估,这似乎需要更长的时间。

标签: sql-server-2012 ssas mdx


【解决方案1】:

是的。只要您想对所有级别的所有成员应用过滤器,您的编码方式就是完美的。

如果您只想搜索所有者名称,那么指定级别名称很重要。

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2023-04-03
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多