Получите корневой уровень измерения в Mdx, используя olap4j Api


У меня есть проблема, которая действительно меня убивает. Кстати, я новичок в Mdx и использую olap4j Api для создания запроса MDX. Моя проблема связана с корневым элементом. Ниже приведен фрагмент кода:

     Query myQuery = new Query("Generated Query", sales); // where sales is an object of type cube.
QueryDimension productDimension = myQuery.getDimension("Product");

Итак, теперь у меня есть объект с измерением Product для использования. Я хочу, чтобы что-то вроде этого [Product].[All Products] было частью MdxQuery, когда я добавляю productDimension к оси. Я могу жестко закодировать [All Products], но если переданное имя измерения отличается от Product, скажем, Stores, это будет проблемой. Итак, что я хочу, так это то, можно ли получить некоторые вещи с такими именами, как [Все продукты] или [Все магазины] или [определенные меры], которые эквивалентны [Всем мерам], динамически используя olap4j?

PS: это метод, который принимает имя измерения и возвращает первый член измерения, например [Продукт].[Все продукты], если продукт передан, или [Меры].[Все меры/некоторые меры], если переданы меры.


person Patton    schedule 16.07.2012    source источник


Ответы (1)


Мне удалось выяснить, как получить корневой элемент. Чтобы получить что-то вроде «Все продукты» или в основном все имена участников, мне нужно сделать что-то, как показано ниже:

Скажем, мне нужно имя всего члена для productDimension[объект типа Dimension для продукта], тогда

   Member allMember = productDimension.getDimension().getDefaultHierarchy().getRootMembers().get(0);

   productDimension.include(Selection.Operator.MEMBER, allMember);

При этом allMember станет частью запроса Mdx.

person Patton    schedule 17.07.2012