MDX计算会员CrossJoin问题

Rya*_*yan 12 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
    )
)
Run Code Online (Sandbox Code Playgroud)

我的想法是,我想要计算维度的两个成员的组合.(请原谅我,如果我的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]})
Run Code Online (Sandbox Code Playgroud)

我的问题是:主查询中发生的数据切片(where子句)是否转换为计算成员?从计算成员返回的数据与主查询中的轴之间是否存在任何类型的隐式连接?

或另一种表达它的方式:计算成员中的交叉连接是否在主查询的上下文中执行?

Ben*_*oit 3

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

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

  • [暗淡响应].[响应 ID].Children 相当于 [暗淡响应].[响应 ID]。DefaultMember.儿童(参见MSDN)。
  • [模糊问题].[问题文本].Children 相当于[模糊问题].[问题文本]。DefaultMember。孩子们

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