Суммирование нескольких запросов MDX в SSAS - PullRequest
1 голос
/ 28 июля 2011

Мне нужно суммировать результаты нескольких запросов.

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

мне нужно иметь возможность объединять / суммировать эти элементы по нескольким запросам MDX

WITH Member [M1] AS Sum(DateRange, Measure)

SELECT [M1]

FROM [Cube]

WHERE {[x].&[y]}



WITH Member [M1] AS Sum(Different DateRange, Measure)

SELECT [M1]

FROM [Cube]

WHERE {[z].&[q]}

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

единственный способ, которым я могу думать об этом, - это UNION, а не SUM ([M1]), но не знаю, как это возможно в MDX

UPDATE - в ответ на вопрос icCube здесьВот почему мне нужно иметь отдельное предложение WHERE для каждого запроса:

Мне нужны отдельные секции WHERE для каждого запроса, потому что мне нужно агрегировать результаты различных срезов.а мои ломтики определяются по n количеству измерений.я отправляю mdx-запрос для каждого среза динамически на основе входных данных конфигурации пользователя (и динамически создаю мое предложение WHERE для фильтрации по пользовательским предпочтениям).Пользователям разрешено настраивать перекрывающиеся фрагменты (это те, которые мне нужно подытожить вместе).Затем мне нужно объединить эти счетчики строк в отчет.Я делаю это, передав строку с запросом MDX в отчет.но, поскольку я не могу придумать, как получить несколько запросов в одну исполняемую строку (и при этом я не знаю, сколько будет запросов), такой подход больше невозможен (если не существует способа их объединения / суммирования.

Единственный способ, которым я мог бы сейчас заняться, - это дополнительный шаг пакетирования , который будет перебирать все запросы, обрабатывать их (используя Adomd.net) в staging таблицы, и затем я могу агрегировать их в отчет, используя сумму SQL (..). Самым большим недостатком этого подхода является сохранение дополнительной системы и больше возможностей для устаревания данных в отчете.

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Не уверен, что это то, что вы ищете

WITH Member [M1] AS Sum(Different DateRange, ([z].&[q],Measure) ) + 
                    Sum(DateRange, ([x].&[y],Measure))

SELECT [M1]

FROM [Cube]

или

WITH Member [M1] AS Sum(Different DateRange * {[z].&[q]}, Measure ) + 
                    Sum(DateRange * {[x].&[y]}, Measure)

SELECT [M1]

FROM [Cube]

Я не знаю, как добавить результат двух выборов в MDX ...

0 голосов
/ 25 октября 2011

Вы можете реализовать поведение UNION в MDX, используя SubCubes следующим образом:

Select
{...} On Columns,
{...} On Rows
From (
     Select 
            {
              {Dimension1.Level.Members * Dimension2.&[1] * Dimension3.&[2]},
              {Dimension1.&[X] * Dimension2.Members * Dimension3.&[5]}  
            } On Columns
     From [Cube]
     )
0 голосов
/ 07 августа 2011

Я считаю, что вам нужно Aggregate() не сумма.

...