Выберите одну иерархию в измерении с несколькими иерархиями

У меня есть куб V, который имеет меру Q и некоторые измерения D, F. В измерении D я хочу иметь 2 иерархии, которые имеют некоторые общие элементы, вот они (две иерархии - это A и T, а общие элементы - M и Я):

-D
   -A
       +A
       +M
       +I
   -T
       +T
       +M
       +I

Я безуспешно пытаюсь создать запрос MDX для доступа к A и T:

select {[Measures].[Q]} ON COLUMNS,
  {([F], [D].[A]} ON ROWS
from [V]

но я получаю сообщение об ошибке от JPivot, использующего Мондриана, говорящего, что

Ошибка Mondrian: объект MDX «[D].[A]» не найден в кубе «V». Поэтому я не могу получить доступ ни к одному из них.

Это моя первая попытка использовать MDX, поэтому я понимаю, что мог что-то упустить из построения куба или понимания языка.


person rano    schedule 23.11.2012    source источник


Ответы (1)


Обычно эта ошибка возвращается, когда элемент, на который вы ссылаетесь, не существует в вашем измерении. Правильный синтаксис для ссылки на конкретную иерархию (помимо значения по умолчанию) — [Dimension.Hierarchy], поэтому попробуйте это

select {[Measures].[Q]} ON COLUMNS,
  {([F], [D.A])} ON ROWS
from [V]

Предполагая, что ваша иерархия A имеет член All, тогда она должна работать.

РЕДАКТИРОВАТЬ: я думал, что вы не можете сделать это в Мондриане, но, попробовав, оказывается, что вы можете: попробуйте объединить двух членов иерархии:

SELECT NON EMPTY {[Measures].[Q]} ON COLUMNS,
  NON EMPTY CROSSJOIN([D.A].[Year].Members, [D.T].[Type].Members) ON ROWS
FROM [V]

Функции NON EMPTY предотвратят появление в выходных данных комбинаций иерархий A и T, не имеющих значений. Имейте в виду, что на самом деле это не позволит вам переходить от года к типу, скорее они будут отображаться рядом.

person Ezequiel Muns    schedule 28.11.2012
comment
Это правильно, но как я могу присоединиться к иерархиям A и T в тех же элементах измерения? - person rano; 29.11.2012
comment
Что значит присоединиться к двум иерархиям? Показать элементы из обеих иерархий одновременно? Приведите пример с реальными именами и тем, что вы ожидаете в своем выводе. - person Ezequiel Muns; 04.12.2012
comment
извините меня за то, что я не могу использовать правильную терминологию :) Предположим, что иерархия A имеет следующие уровни Year->Model->ID, а другая иерархия T имеет тип->Model->ID. Я хотел бы в одном и том же измерении mdx (т.е. ROWS) развернуть тип и получить некоторые модели, затем развернуть по году и получить значения в тех же строках, а не в других строках. Каждая строка должна агрегировать мою фактическую меру для модели с определенным годом и типом. - person rano; 04.12.2012