Я использую запрос MDX, чтобы получить информацию для поддержки набора отчетов.Для отчетов требуется высокая степень детализации, поэтому для их создания требуется некоторое время.Чтобы ускорить время доступа, мы извлекаем необходимые данные и сохраняем их в плоской таблице Oracle, а затем подключаемся к таблице в Excel.Это позволяет обновлять отчеты за считанные секунды, а не минуты.
Ранее MDX создавался и запускался отделом для 100 отделов, а затем для ряда других фильтров.Все это было сделано в VB.Net.Требования к фильтрам выросли до такой степени, что этот метод не является устойчивым (и, вероятно, не лучшим подходом независимо от него).
Я собрал весь набор данных в один запрос MDX, который работает отлично.Один из моих наборов, который я кросс-объединяю, включает членов с трех разных уровней иерархии, это выглядит так:
(
Descendants([Merch].[Merch CHQ].[All], 2),
Descendants([Merch].[Merch CHQ].[All], 3),
[Merch].[Merch CHQ].[Department].&[1].Children
)
Проблема для меня заключается в нашей иерархии (которую я не могу изменить), каждой группе(первый элемент) и каждый отдел (второй элемент) имеют одинаковую структуру с именами, то есть 15-DeptName, и работать с ним непонятно.
Для решения этой проблемы я добавил члена:
MEMBER
[Measures].[Merch Level] AS
(
[Merch].[Merch CHQ].CurrentMember.Level.Name
)
, который возвращает тип члена, и он отлично работает.
Проблема в том, что он обновляется для каждого члена, поэтому ни одна из строк не фильтруется NON BLANK, вместо 65k строк у меня 130k строк, которыеповлияет на производительность моего доступа.
Может ли мой запрос быть изменен, чтобы отфильтровать все непропуски, кроме использования IIF для проверки каждого измерения на ноль?