MDX: среднее использование - PullRequest
1 голос
/ 30 мая 2011

Я достигаю предела своих базовых знаний по 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 (своего рода групповое)

Если кто-то может просветить, я приложуreciate.

Сердечно,

Ответы [ 2 ]

0 голосов
/ 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])}
0 голосов
/ 30 мая 2011

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

Вы можете перейти к другой версии -> SUM (FILTER (.. members, condition), value) ..... это может быть медленно, очень медленно.

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

...