MDX计算会员CrossJoin问题

时间:2010-01-14 19:44:43

标签: olap mdx cubes

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

或者用其他方式来表达它:计算成员中的交叉连接是否在主查询的上下文中执行?

1 个答案:

答案 0 :(得分:2)

CrossJoin的评估不依赖于上下文,但Filter函数确实如此。

计算成员在查询的上下文中进行评估,计算成员可能具有常量值,因为:

  • [Dim Response]。[Response ID] .Children相当于[Dim Response]。[Response ID]。DefaultMember。Children(见MSDN)。
  • [Dim Question]。[问题文本]。孩子相当于[Dim Question]。[问题文本]。DefaultMember。孩子

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