Запрос MDX, содержащий 2 измерения из одной иерархии

соответствующие структуры из моего Куба заключаются в том, что у меня есть иерархия с "классом" и "подклассом". У меня также есть мера под названием "ценность", которую я пытаюсь получить.

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

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

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

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

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 ответов


в измерении отсутствует свойство 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]

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

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


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

 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 в запрос.