2014-11-11 4 views
1

Я работаю в инструменте BI для самообслуживания (если это помогает), что позволяет использовать пользовательские элементы, используя MDX.MDX Calculated Member Третий параметр

Я пытаюсь найти меру, связанную с другим измерением (Прогнозная сумма привязана к Неделе прогноза) на основе значения, выбранного в выбранном измерении, Дата текущего заказа.

Функция linkmember - это то, что я думал об использовании и, кстати, в настоящее время используется. Парень, который работал до меня, придумал этот запрос для вычисляемого элемента:

<code> 
    (
     LINKMEMBER 
     ( 
      [Order Date].[Order Calendar].[[email protected] Order [email protected]!].PARENT 
      , [Forecast Date].[Order Calendar] 
     ) 
     ,[Measures].[Forecast Amount] 
     ,[Order Date].[Order Calendar].[All] 
    ) 
</code> 

Я сейчас поставлена ​​задача сделать больше изменений в этом запросе (различные меры и размеры и т.д.)

Мой вопрос был связанный с третьим аргументом/параметром в вышеприведенном общем запросе, [Order Date]. [Order Calendar. [All], (а не бит linkmember, который я знаю, как он работает).

Моя интерпретация вышеуказанного утверждения в псевдо-английском языке была «для члена или набора членов, сгенерированных первым аргументом (оператор LINKMEMBER), возвращает соответствующую сумму меры (Прогноз)), но для жизни меня , Я не могу понять, что делает третий аргумент и является ли он лишним. Запрос работает в его текущей форме, так что, если я его отброшу или нет, я хотел бы знать, почему я это делаю.

Я попытался выполнить поиск, чтобы увидеть, связано ли это с областью действия запроса, но не содержит ключевое слово SCOPE и не найдено результатов поиска по «третьему параметру» и т. Д. Насколько мне известно, этот не относится к субкубам и т. д., но я рад, что исправлен.

Любые входы или указатели на то, что я должен искать, будут высоко оценены.

(извинения, если я пропустил некоторые другие критерии поиска)

Спасибо, S

Редактировать добавлено добавить пример во время тестирования ответа FrankPI в

Благодаря FrankPI. Понадобилось время, чтобы переварить, но получил его в конце концов, прочитав ваш комментарий и придумав пример.

Если я правильно понял, без третьего параметра, измерение, возвращаемое в результате первых двух аргументов, затем подмножается (/ нарезано) тем, что отображается в текущей строке, как показано ниже. Если между ними существует взаимосвязь, то это прекрасно.

<code> 
    with 
    member [measures].[x1] as 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].[Trading Week].&[2014]&[47] 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
     ) 
    select 
    { 
     [measures].[x1] 
    } 
    on 0, 
    { 
     [Forecast Date].[Order Calendar].[Trading Week].&[2014]&[47] 
    } 
    on 1 
    from [Cube] 
</code> 

Но когда внизу не происходит (никакого отношения), то возвращается Null, если контекст не установлен, как так

<code> 
    with 
    member [measures].[y1] as 
     sum 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].currentmember 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
     ) 
    member [measures].[y2] as 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].currentmember 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
      , 
      [Order Date].[Order Calendar].[All] 
     ) 
    select 
    { 
     [measures].[y1] // returns null 
     , 
     [measures].[y2] // returns value 
    } 
    on 0, 
    { 
     [Order Date].[Order Calendar].[Trading Week].&[2014]&[47] 
    } 
    on 1 
    from [Cube] 
</code> 

Спасибо за ответ!

ответ

0

Третий параметр изменяет контекст иерархии Order Calendar, чтобы использовать все даты заказа вместо текущего.

LinkMember изменяет текущий элемент Forecast Date, для которого вычисление происходит, но не меняет Order Calendar CurrentMember от того, что происходит из окружающей среды (е. Г. Ток строк/столбцов, где условие).

+0

Спасибо за ваш ответ. Оригинальный вопрос, отредактированный выше, чтобы проиллюстрировать пример, если кто-то останавливается. –

Смежные вопросы