MDX计算成员CrossJoin问题

12

我有一个包含以下计算成员的MDX查询:

with member [Measures].[BBOX] as
Count(
    Filter(
        CrossJoin([Dim Response].[Response ID].Children, [Dim Question].[Question Text].Children),
        [Measures].[Question Bottom Box] > 0
    )
)

我的想法是,我想要一个维度中两个成员组合的计数。 (如果我的 MDX 词汇有点不对,请原谅)。 它还基于一些条件。

查询的其余部分如下:

select 
{({[Measures].[TBOX], [Measures].[BBOX]}, 
[Dim Product].[Category Name].&[Office])} on columns,
{[Dim Question].[Question Text].Members} on rows 
from H1_FY10_Revised
where ({[Dim Question].[Category Name].&[Partner]}, 
{[Dim Subsidiary].[Subsidiary Alias Name].&[Germany]})
我的问题是:主查询中发生的数据切片(where子句)是否会转换为计算成员? 计算成员返回的数据和主查询中的轴之间是否存在任何隐式连接?
或者说:计算成员中的交叉联接是否在主查询的上下文中执行?

2
我现在感觉有点傻。我相信我找到了问题所在。为了在查询的上下文中包含上下文,可以使用.CurrentMember而不是.Member或.Children。这样我就可以得到查询上下文中的适当成员。啊,MDX... - Ryan
2
你应该在下面发布那个作为答案。 - Sampson
2
Ryan,请将您的评论发布为答案,以便将其标记为解决方案。 - dani herrera
@Ryan,如果你要回答这个问题的话,现在就应该回答,因为悬赏还没结束。 - Eric
1个回答

3
评估CrossJoin的结果不取决于上下文,但Filter函数会受到影响。
计算成员是在查询的上下文中进行评估的,但您的计算成员可能具有常量值,因为:
  • [Dim Response].[Response ID].Children等同于[Dim Response].[Response ID].DefaultMember.Children(请参见MSDN)。
  • [Dim Question].[Question Text].Children等同于[Dim Question].[Question Text].DefaultMember.Children。
因此,CrossJoin的结果并不取决于切片器。只有[Measures].[Question Bottom Box]的值会受到切片器的影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接