Ssas 已筛选祖先(计算成员)的MDX LastSibling

Ssas 已筛选祖先(计算成员)的MDX LastSibling,ssas,mdx,olap-cube,ssas-2012,Ssas,Mdx,Olap Cube,Ssas 2012,在我的多维数据集中的计算成员中,我正在利用祖先函数与最后同级组合,如下所示: Ancestor ( [Dimension].[User Hierarchy].CurrentMember, [Dimension].[User Hierarchy].[Desired Member Level] ).LastSibling 在提取lastsbibling之前,是否可以过滤包含返回祖先的集合?例如,对于由此返回的祖先,应用以下过滤器表达式: Filter ( [Dimen

在我的多维数据集中的计算成员中,我正在利用
祖先
函数与
最后同级
组合,如下所示:

Ancestor
( 
    [Dimension].[User Hierarchy].CurrentMember,
    [Dimension].[User Hierarchy].[Desired Member Level]
).LastSibling
在提取
lastsbibling
之前,是否可以过滤包含返回祖先的集合?例如,对于由此返回的祖先,应用以下
过滤器
表达式:

Filter  
(
    [Dimension].[User Hierarchy].[Is Actual].Members,
    [Dimension].[User Hierarchy].Properties( "Is Actual" ) = "N"            
)

最终,我尝试从层次结构的
CurrentMember
返回与
祖先
函数返回的成员相同集合的最后一个成员,该成员满足上述过滤器。

尝试使用
祖先
而不是
祖先
-然后返回一个集合:

Filter
(
  Ancestors
  (
    [Dimension].[User Hierarchy].CurrentMember
   ,[Dimension].[User Hierarchy].[Is Actual]
  )
 ,
  [Dimension].[User Hierarchy].Properties("Is Actual") = "N"
).Item(0).LastSibling
Ok-以上是错误的,因为
Filter
返回一个集合,但
lastsbibling
需要一个
成员。在重新阅读您的要求后,也许这更符合您的要求:

TAIL(
  FILTER                    //<< 3. find the last member
  (
    ANCESTOR                //<< 1. find the ancestor member within [Some higher level]
    (
      [Dimension].[User Hierarchy].CURRENTMEMBER
     ,[Dimension].[User Hierarchy].[Some higher level]
    ).LEVEL.MEMBERS         //<< 2. find all the members of the higher level
   ,
    [Dimension].[User Hierarchy].CURRENTMEMBER.Properties("Is Actual") = "N"
  )
)             
TAIL(

筛选//尝试使用
祖先
而不是
祖先
-然后返回一个集合:

Filter
(
  Ancestors
  (
    [Dimension].[User Hierarchy].CurrentMember
   ,[Dimension].[User Hierarchy].[Is Actual]
  )
 ,
  [Dimension].[User Hierarchy].Properties("Is Actual") = "N"
).Item(0).LastSibling
Ok-上面的说法是错误的,因为
Filter
返回一个集合,但
lastssibling
需要一个
成员。重新阅读您的要求后,这可能更符合您的要求:

TAIL(
  FILTER                    //<< 3. find the last member
  (
    ANCESTOR                //<< 1. find the ancestor member within [Some higher level]
    (
      [Dimension].[User Hierarchy].CURRENTMEMBER
     ,[Dimension].[User Hierarchy].[Some higher level]
    ).LEVEL.MEMBERS         //<< 2. find all the members of the higher level
   ,
    [Dimension].[User Hierarchy].CURRENTMEMBER.Properties("Is Actual") = "N"
  )
)             
TAIL(

至少在
SSAS
(不确定是否有其他支持
MDX
的技术)中筛选//,成员只能有一个祖先。因此从技术上讲
祖先
祖先
是一样的

现在回到你的问题。如果你想进行过滤,你可以使用
IIF
语句,或者使用
过滤器

使用
IIF
进行过滤:

IIF
    (
     Ancestor
            (
                [Dimension].[User Hierarchy].CurrentMember, 
                [Dimension].[User Hierarchy].[Desired Member Level]
            ).PROPERTIES("Is Actual") = "N", 
    , 
     Ancestor
            (
                [Dimension].[User Hierarchy].CurrentMember, 
                [Dimension].[User Hierarchy].[Desired Member Level]
            ).LastSibling
    ,
    NULL
    )
使用
过滤器进行过滤

FILTER(
        Ancestor
        (
            [Dimension].[User Hierarchy].CurrentMember, 
            [Dimension].[User Hierarchy].[Desired Member Level]
        )
        ,
        Ancestor
        (
            [Dimension].[User Hierarchy].CurrentMember, 
            [Dimension].[User Hierarchy].[Desired Member Level]
        ).PROPERTIES("Is Actual") = "N"
    ).item(0).LastSibling

.lastssibling
实际上是冗余的,因为在这种情况下只有一个兄弟姐妹。

至少在
SSAS
(不确定是否有其他技术支持
MDX
)中,成员只能有一个祖先。因此从技术上讲
祖先
祖先
是一样的

现在回到你的问题。如果你想进行过滤,你可以使用
IIF
语句,或者使用
过滤器

使用
IIF
进行过滤:

IIF
    (
     Ancestor
            (
                [Dimension].[User Hierarchy].CurrentMember, 
                [Dimension].[User Hierarchy].[Desired Member Level]
            ).PROPERTIES("Is Actual") = "N", 
    , 
     Ancestor
            (
                [Dimension].[User Hierarchy].CurrentMember, 
                [Dimension].[User Hierarchy].[Desired Member Level]
            ).LastSibling
    ,
    NULL
    )
使用
过滤器进行过滤

FILTER(
        Ancestor
        (
            [Dimension].[User Hierarchy].CurrentMember, 
            [Dimension].[User Hierarchy].[Desired Member Level]
        )
        ,
        Ancestor
        (
            [Dimension].[User Hierarchy].CurrentMember, 
            [Dimension].[User Hierarchy].[Desired Member Level]
        ).PROPERTIES("Is Actual") = "N"
    ).item(0).LastSibling


.lastssibling
实际上是冗余的,因为在这种情况下只有一个兄弟姐妹。

是否可以过滤返回的祖先..祖先只返回一个成员-那你为什么要过滤它呢?是的,很抱歉你是正确的,最后的兄弟姐妹仍然可以使用它。我愿意接受另一个函数的建议,而不是祖先函数,它将提供由提到的祖先函数返回的成员的所有成员集,以便我可以过滤这些成员t并获得筛选后的最后一个成员。我编辑了问题。
祖先
可能是您需要的函数,而不是
祖先
我已经离开了,自从返回后,我正在考虑使用,而不是组合使用筛选和兄弟函数。虽然暂时已经摆脱了这个问题,但将重新考虑访问它。好东西-这是一个有趣的问题。“有可能过滤返回的祖先吗?”..祖先只返回一个成员-那你为什么要过滤它呢?是的,很抱歉你是正确的,最后的兄弟姐妹仍然可以使用它。我愿意接受另一个函数的建议,而不是祖先函数,它将提供由提到的祖先函数返回的成员的所有成员集,以便我可以过滤这些成员t并获得筛选后的最后一个成员。我编辑了问题。
祖先
可能是您需要的函数,而不是
祖先
我已经离开了,自从返回后,我正在考虑使用,而不是组合使用筛选和兄弟函数。虽然暂时已经摆脱了这个问题,但将重新考虑访问它。好东西-这是一个有趣的问题。我尝试过祖先函数,但它不起作用。如果我解释正确,该函数仍然只返回一组1。一种函数,用于返回指定成员在指定级别或与该成员的指定距离处的所有祖先的集合。对于Microsoft SQL Server Analysis Services,返回的集合将始终由单个成员组成-Analysis Services不支持单个成员的多个父级。请注意,我使用的层次结构的级别表达式与您在“[is Actual];[is Actual]中指定的级别不同实际上是一个比我所追求的祖先级别低的级别,也许这是问题的一部分?@whytheq-没有
LastMember
@Sourav\u Agasti nice one Sourav-我将交换tailo我还缺少
项(0)
-现在添加。我感觉用户需要的东西比我们提供的要简单得多。我无法完全理解这些要求。我尝试过的祖先函数不起作用。如果我解释正确,该函数仍然只返回一组1。一种函数,用于返回指定成员在指定级别或与该成员的指定距离处的所有祖先的集合。对于Microsoft SQL Server Analysis Services,返回的集合将始终由单个成员组成-Analysis Services不支持单个成员的多个父级。请注意,我使用的层次结构的级别表达式与您在“[is Actual];[is Actual]中指定的级别不同实际上是一个比我所追求的祖先级别低的级别,也许这是问题的一部分?@whytheq-没有
LastMember
@Sourav\u Agasti nice one Sourav-我将交换tailo-我还缺少一个
项(0)
-现在添加。我得到了f