2015-03-11 3 views
0

Pentaho 5.1.2.1.137CalculatedMember формула игнорирует текущий контекст запроса

Я определил измерение с иерархией, который содержит 3 уровня: Enterprise, разделение, магазин. В моем кубе у меня есть CalculatedMember, который подсчитывает количество магазинов для текущего члена этой иерархии. Это выглядит следующим образом:

<CalculatedMember name="Store count" dimension="Measures"> 
    <Formula>Count(Descendants([Location.Location].CurrentMember, [Store]))</Formula> 
</CalculatedMember> 

... и это работает прекрасно, пока ...

Я пытаюсь создать отчет, где я поставил фильтр «Отдел включает Отдел 1». Это работает, если в отчете содержатся столбцы для подсчета Enterprise, Division и Store, но нет, если отчет содержит только столбцы для подсчета Enterprise и Store. В этом случае счет магазина устанавливается равным 0, хотя в разделе 1. есть 5 магазинов.

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

Заранее спасибо.

ответ

0

Ваш запрос не ударит Division, потому что в вашей формуле вы ссылаетесь на [Location.Location].CurrentMember, что означает, что нет Division уровня, указанного на другой оси, вы не получите результат.

Вы можете изменить формулу, чтобы всегда использовать низкий уровень, а также добавить Существующее ключевое слово, которое заставит сервер использовать текущий контекст фильтрации:

Count(EXISTING [Location.Location].[Store].members) 
+0

Спасибо за ответ. К сожалению, при использовании 'existing' генерируется MondrianException с использованием версии Pentaho. (Вероятно, поэтому «существующие» не отображаются в документах Pentaho.) –

+0

Проверьте эту ссылку http://forums.pentaho.com/showthread.php?82955-MDX-quot-EXISTING-quot-Keyword-Need-Syntax -Помогите – George