MDX Расчетный член CrossJoin вопрос - PullRequest
12 голосов
/ 14 января 2010

У меня запрос 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 Ответ

2 голосов
/ 21 ноября 2012

Оценка CrossJoin не зависит от контекста, но функция Filter делает.

Вычисляемые элементы оцениваются в контексте запроса, но вычисляемый элемент может иметь постоянное значение, потому что:

  • [Dim Response]. [ID ответа]. Дети эквивалентны [Dim Response]. [ID ответа]. DefaultMember .Children (см. MSDN ).
  • [Тусклый вопрос]. [Текст вопроса]. Дети эквивалентны [Тусклый вопрос]. [Текст вопроса]. DefaultMember .Дети

Таким образом, результат CrossJoin не зависит от слайсера. Только значение [Measures].[Question Bottom Box] будет зависеть от слайсера.

...