这感觉像是一个非常基本的问题,因为这是我正在寻找的一个非常基本的功能。
我知道你能做到:
([Dimension].CurrentMember IS [Dimension].[AParticularMember])
您将得到逻辑 1 或 0 作为函数值。
但是如何在不将 IS 函数连接到一大堆丑陋的 OR 中的情况下完成这种事情:
([Dimension].CurrentMember ISAMEMBEROF
{[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]}
)
?
这确实是基本的集合运算,仅在一维中,但我就是找不到执行此操作的该死的函数。我试过这个:
NOT(ISEMPTY(INTERSECT([Dimension].CurrentMember,
{[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]})))
但它为每个维度成员返回 True。我猜这是因为进入 ISEMPTY 函数的不是维度成员,而是元组
([Dimension].CurrentMember,[AnotherDimension].DefaultMember,
[YetAnotherDimension].DefaultMember,... ,Measures.DefaultMember)
MDX 中是否存在我正在寻找的那种功能?
你很接近:
INTERSECT([Dimension].CurrentMember,
{[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]}).Count > 0
在 icCube 中您还可以使用 IsIn 函数
IsIn( {[Dimension].[AMember],[Dimension].[AnotherMember],[Dimension].[YetAnotherMember]}
, [Dimension].CurrentMember )