在我的多维数据集中的计算成员中,我正在利用Ancestor
函数与LastSibling
结合使用,如下面所示:
Ancestor
(
[Dimension].[User Hierarchy].CurrentMember,
[Dimension].[User Hierarchy].[Desired Member Level]
).LastSibling
在拉出LastSibling
之前,是否可以过滤包含返回祖先的集合?例如,由此返回的祖先,应用以下Filter
表达式:
Filter
(
[Dimension].[User Hierarchy].[Is Actual].Members,
[Dimension].[User Hierarchy].Properties( "Is Actual" ) = "N"
)
最终我试图从我的CurrentMember
层次结构中返回同一组的最后一个成员Ancestor
函数返回的成员,这满足了上面提到的过滤器。
答案 0 :(得分:0)
尝试使用Ancestors
而不是Ancestor
- 然后返回一个集合:
Filter
(
Ancestors
(
[Dimension].[User Hierarchy].CurrentMember
,[Dimension].[User Hierarchy].[Is Actual]
)
,
[Dimension].[User Hierarchy].Properties("Is Actual") = "N"
).Item(0).LastSibling
好的 - 上面的错误是因为Filter
会返回一个集合,但LastSibling
需要member
。重新阅读您的要求后,这可能更符合您的要求:
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"
)
)
但是你不能只使用Filter,你知道要过滤的级别:
TAIL( //<< or .LASTSIBLING
FILTER
(
[Dimension].[User Hierarchy].[Some higher level].MEMBERS,
[Dimension].[User Hierarchy].CURRENTMEMBER.Properties("Is Actual") = "N"
)
)
答案 1 :(得分:0)
SSAS
中的Atleast(不确定支持MDX
的其他技术)成员只能拥有一个祖先。因此技术上ANCESTOR
和ANCESTORS
是相同的。
现在回到你的问题。如果您要进行过滤,可以使用IIF
语句,也可以使用FILTER
。
使用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
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
.LastSibling
真的多余,因为在这种情况下只会有一个兄弟。