2015-05-28 6 views
0

Я новичок в MDX, и у меня есть следующий сценарий. Я должен рассчитать доход по определенному отделу (размер продукта), конкретному хранилищу (размеру местоположения) и по определенному временному диапазону.Как включить членов с определенными дочерними элементами в перекрестное соединение запроса MDX?

У меня есть уровни куба следующим образом.
Product <- Department <- Item
Location <- Region <- Store
Time <- Year <- Month <-Day

Скажем, если я следующие члены

[Product].[Dairy].[Oak Farm] 
[Product].[Dairy].[GV] 

[Location].[US West].[LA] 
[Location].[US West].[CA] 

[Time].[2015].[01].[01] : [Time].[2015].[02].[01] 


Тогда я должен получить результат, как где продукт должен включать в себя только GV и местоположение должно включать только CA

2015-01-01  US West  Dairy  $100 
2015-02-01  US West  Dairy  $100 

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

+0

человек голосует, чтобы закрыть ваш вопрос, потому что вы не представили пример предпринятого вами mdx. – whytheq

+0

сделал Sourav или мне помощь с нашим ответом - любая обратная связь будет оценена по достоинству. – whytheq

+0

Извините за задержку. То, что я искал, - это сказать, что существует [Region1] с [Store1 [], [Store2] и [Store3] в качестве своего ребенка, скажем, у меня есть менеджер ролей, который разрешил [Store] [Region1] [Store1] и [ Store] [Region1] [Store2], и когда мне нужна агрегирование по [Region1], MDX должен дать мне просто агрегацию поверх [Store1] и [Store2], а не отображать ее для всех трех магазинов. – gowtham

ответ

0

Возможно, несколько способов в зависимости от точных требований.

SELECT 
    [Measures].[SomeCubeMeasure] ON 0,  
    {[Time].[2015].[01].[01] : [Time].[2015].[02].[01]}* 
    Exists 
    (
     [Location].[Region].MEMBERS 
    ,[Location].[US West].[CA] 
    )* 
    Exists 
    (
     [Product].[Department].MEMBERS 
    ,[Product].[Dairy].[GV] 
    ) ON 1 
FROM [yourCube]; 

Редактировать

Чтобы создать меру, которая просто смотрит на некоторых магазинах вы можете использовать что-то вроде этого:

WITH MEMBER [Measures].[Store1and2Measure] AS 
    Aggregate 
    (
     { 
     [Store][Region1][Store1] 
     ,[Store][Region1][Store2] 
     } 
    ,[Measures].[SomeCubeMeasure] 
    )  
SELECT 
    [Measures].[Store1and2Measure] ON 0,  
    [Location].[US West].[LA] ON 1 
FROM [yourCube]; 
+0

Я точно пробовал это. Может быть, я должен был разместить вопрос по-другому. Фактически, мне нужно, чтобы выход должен был содержать местоположение на уровне региона, в котором должны содержаться только определенные члены его детей. Скажем, если Region: [DFW South] включает в себя магазины [Даллас], [Арлингтон], [Ирвинг], но мне нужно [Местоположение]. [DFW South], который должен содержать только [DFW South]. [Даллас] и [DFW на юг]. [Арлингтон] для мер на уровне региона – gowtham

+0

Редактирование является полезным. Только проблема, с которой я сталкиваюсь в этом подходе, - это сказать, что мне нужны потомки размерности магазина, которые будут отображаться в моей таблице. В этом случае вышеуказанный подход дает только результат из [Меры]. [Store1and2Measure] для каждого потомка. Скажите, что мне нужно
Регион1 100 Store1 40 Store2 60
, но с вышеуказанным запросом будет отображаться только 100 на каждом члене. – gowtham

1

Очень простой способ сделать это. @Whytheq дал гораздо лучшее решение.

SELECT  
     (
     [Product].[Dairy].[GV]* 
     {[Time].[2015].[01].[01] : [Time].[2015].[02].[01]}* 
     [Location].[US West].[CA] 
    ) ON 1, 
[Measures].Revenue ON 0 
FROM [YourCube] 
+0

(вверх) точно такие вещи Sourav ... представьте реакцию людей, которые получат от сообщества, если вопрос был помечен 'sql', и ответ был« SELECT X AS «X», Y AS «Y», SUMZ = СУММА (ИЗМЕРЕНИЕ) ИЗ СОТРУДНИЧНОЙ ГРУППЫ ПО X, Y "... – whytheq

 Смежные вопросы

  • Нет связанных вопросов^_^