Подведение нескольких запросов MDX в SSAS
Мне нужно SUM результаты нескольких запросов.
вызов, который у меня есть, состоит в том, что каждый запрос имеет определенные члены (для расчета диапазона дат)
я должен иметь возможность комбинировать / суммировать эти элементы по нескольким запросам mdx
- Иерархия mdx XXX уже появляется на оси оси 0
- Размер даты запроса за последние 5 месяцев
- уровень, а также член
- Запрос OPENQUERY MDX очень медленный во время обработки куба
- 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) в промежуточную таблицу, а затем я могу объединить их в отчет с использованием суммы SQL ( ..). Наибольшим недостатком такого подхода является дополнительная система, которая будет поддерживаться, и больше возможностей, которые данные в отчете будут устаревать.
- Отображение агрегированного значения в зависимости от значения другого столбца
- Поиск данных за каждый последующий финансовый период в запросе mdx
- Возврат пользовательских дней
- Ошибка разрешения MDX при вызове таблицы в экземпляре SQL Server
- Разница между двумя измерениями, отфильтрованными с помощью MDX SSAS
- Отчет MDX для конкурентного анализа рынков
- Эквивалент SQL Rollup в MDX
- StrToSet по списку участников
Не уверен, что это то, что вы ищете
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 …
Я считаю, что вам нужен Aggregate()
not Sum.
Вы можете реализовать поведение 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] )