MDX-запрос, содержащий 2 измерения из одной иерархии - PullRequest
6 голосов
/ 07 декабря 2009

Соответствующие структуры из моего куба состоят в том, что у меня есть Иерархия с "Классом" и "Подклассом". У меня также есть Мера под названием «Значение», которую я пытаюсь получить.

Простой запрос может выглядеть так:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY ([Some Dimension].[Class Hierarchy].[Class]) ON ROWS
FROM [MyCube]

И я, очевидно, могу читать подкласс, используя иерархию, возвращаемую в Adomd.

Моя проблема двоякая, во-первых, как бы я "сгладил" эту иерархию, чтобы получить и Class, и SubClass в качестве отдельных членов в CellSet? Это не работает:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   [Some Dimension].[Class Hierarchy].[Class], 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]

Иерархия классов используется более одного раза в функции Crossjoin

Второй вопрос, который мне на самом деле нужно сделать, - это отфильтровать вышеупомянутое на определенных классах, опять же, это не будет работать по той же причине, что и выше.

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   {[Some Dimension].[Class Hierarchy].[Class].&[ClassA],[Some Dimension].[Class Hierarchy].[Class].&[ClassB]}, 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]

Любая помощь высоко ценится. MDX сводит меня с ума!

Ответы [ 3 ]

4 голосов
/ 07 декабря 2009

В вашем измерении отсутствует свойство MEMBERS.

Для первого примера попробуйте следующее:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS,
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].MEMBERS,
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]

Для второго примера попробуйте следующее:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS, 
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].&[ClassA],
            [Some Dimension].[Class Hierarchy].[Class].&[ClassB],
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]
2 голосов
/ 20 сентября 2013

Используйте подзапросы в предложении WHERE. MDX всегда будет ограничивать использование одного измерения только на одной оси.

Sub Query - способ обойти это. Я недавно научился этому трюку после того, как MDX меня тоже смутил

0 голосов
/ 07 декабря 2016

Привет, этот запрос работал для меня.

 SELECT NON EMPTY { [Measures].[App Count] }
 ON COLUMNS, 
 NON EMPTY 
 {(
 EXISTING 
 (
 [MART TIME DIM].[Date].[Date] .MEMBERS) * 
 [New Ren DIM].[New Ren CODE].[New Ren CODE].ALLMEMBERS
 )}
 ON ROWS FROM [SubmissionCube]  
 where
({
[MART BROKER DIM].[BROKER ID].&[10812]},{[MART TIME DIM].[Year].&[2015],
{[MARTTIME DIM].[Year].&[2016]}
})  

Пожалуйста, будьте осторожны с '}' в предложении where, так как запрос имеет.

...