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 子句)中发生的数据切片是否转换为计算成员?从计算成员返回的数据与主查询中的轴之间是否存在任何类型的隐式连接?

或者换一种说法:计算成员中的交叉连接是否在主查询的上下文中执行?

4

1 回答 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。孩子们

所以结果CrossJoin不依赖于切片器。只有 的值[Measures].[Question Bottom Box]取决于切片器。

于 2012-11-20T21:49:25.880 回答