Как включить членов с конкретными дочерними элементами в перекрестное объединение запросов 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]


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

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

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

2 ответа

Решение

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

 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];

Очень простой способ сделать это. @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]
Другие вопросы по тегам