MDX: среднее расширенное использование

Я исчерпываю свои базовые знания MDX по проблеме, если у кого-то есть идея, любая помощь будет приветствоваться

Ситуация

Это иерархия, с которой я хотел бы разобраться. В моей таблице фактов есть мера [Меры]. [Продажи].

[All Management].[TemplateMgt].[CityMgt].[DistricMgt].[StoreMgt]

[All Management].[TMP-00.002].[London].[DistricMgt].[Shoe001]
[All Management].[TMP-00.002].[London].[DistricMgt].[Hat001]
[All Management].[TMP-00.002].[London].[DistricMgt].[Electronic001]
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Shoe001]
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Hat001]
[All Management].[TMP-00.002].[Paris].[DistricMgt].[Electronic001]
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Shoe001]
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Hat001]
[All Management].[TMP-00.002].[Madrid].[DistricMgt].[Electronic001]

Проблема

Для данного CityMgt я хотел бы иметь три значения

[Меры]. [Cur]: StoreMgt продажи данного CityMgt (так, для Мадрида получите значение [Shoe001], [Hat001], [Electronic001]).

[Меры]. [Avg]: средние продажи группы StoreMgt по StoreMgt с одинаковым TemplateMgt AVG ([Лондон]. [Shoe001] + [Париж]. [Shoe001] + [Мадрид]. [ Shoe001])

[Меры]. [Макс]: максимальные значения продаж StroreMgt с таким же TemplateMgt MAX ([Лондон]. [Shoe001], [Париж]. [Shoe001], [Мадрид]. [Shoe001] )

Другими словами, я хотел бы получить результат с такой структурой

  Shoe001    |  Hat001     |  Electronic001
 ----------------------------------------------------
 CUR|AVG|MAX | CUR|AVG|MAX  | CUR|AVG|MAX
 ----------------------------------------------------

Что я получил на данный момент

WITH  MEMBER [Measures].[Cur] AS (...)
          MEMBER [Measures].[Avg] AS (...)
          MEMBER [Measures].[Max] AS (...)

SELECT {[Measures].[Cur], [Measures].[Avg], [Measures].[Max]} ON COLUMNS,
{FILTER({DESCENDANTS([All Management].CurrentMember, [StoreMgt])}, [All Management].Parent.Parent = "Madrid" } ON ROWS
from [MyCube]

Моя проблема в том, что я не знаю, что добавить в атрибуты члена Cur / Avg / Max, чтобы мои данные можно было обрабатывать через StoreMgt (своего рода groupby)

Если кто-то может просветить меня, я буду признателен.

С уважением,


person Spredzy    schedule 30.05.2011    source источник


Ответы (2)


Чтобы получить среднее значение, вы можете определить новые иерархии (атрибуты, если вы используете SSAS). Один для страны, а другой для типа продукта. Как только вы их получите, статистические расчеты станут вопросом игры с текущим участником и [Все].

Вы можете выбрать другую версию -> СУММ (ФИЛЬТР (.. элементы, условие), значение) ... это может быть медленным, очень медленным.

Как правило, для такого рода вычислений вы можете использовать то, что мы называем статистическими или вспомогательными измерениями (см.).

person ic3    schedule 30.05.2011

Я не совсем уверен, что следующий запрос будет работать, надеюсь, он передает идею,

WITH MEMBER [All Management].[Sales_AVG] AS AVG({[All Management].Members},                           
                                                       [Measures].currentMember)
     MEMBER [All Management].[Sales_MAX] AS MAX({[All Management].Members},        
                                                        [Measure].currentMember)
SELECT {[Measures].[Sales]} ON COLUMNS,
       {[All Management].Members, [All Management].[Sales_AVG], 
         [All Management].[sales_Max]} ON ROWS FROM [MYCUBE] WHERE
       {DESCENDANTS([All Management].CurrentMember, [StoreMgt])}
person GauravJ    schedule 05.06.2011