Отключайте неработающие связи между размерностями и мерами
Самородов Федор Анатольевич: Отключайте неработающие связи между размерностями и мерами
Работая с многомерными базами данных, вы наверняка наблюдали такой эффект, когда мера не делится по некоторым измерениям.
Вот я пытаюсь разложить показатели розничных продаж по реселлерам:
Но ни количество проданных единиц товара, ни выручка не распадаются на слагаемые.
Такой же результат я наблюдаю, подключившись к базе из экселя:
В этом нет ничего странного, потому что я пытаюсь проделать некорректную операцию. Если заглянуть в структуру куба, то мы увидим, что размерность реселлеров вообще никак не связана с розничными продажами. Срезы по реселлерам и их атрибутам имеют смысл при анализе оптовых продаж. А прикладывать их к рознице нет никакого смысла. Поэтому сервер и не может разложить розничные меры по значениям чисто оптового атрибута Reseller.[Business Type].
В таких ситуациях сервер принудительно схлопывает не связанные с мерами иерархии до вамого верхнего уровня. Из-за этого в результате запроса итоговое значение просто дублируется.
Хорошо, что мы помним, как устроены наши кубы и не будем пытаться в запросах резать меры по несуществующим связям. Однако, отсутствие сообщения об ошибке или какого-то предупреждения означает, что пользователи время от времени будут пытаться строить некорректные отчёты и тратить время на поиск ошибок.
В конструкторе куба есть возможность устранить такую возможность. Это флаг IgnoreUnrelatedDimensions в настройках группы мер:
По умолчанию он разрешает пользователю связывать в MDX-запросе что угодно с чем угодно.
Полезно сбросить этот флаг для устранения возможности случайно или в результате ошибки получить некорректные данные в отчётах:
Теперь при попытке соединить несоединяемое сервер просто не будет выдавать какие-либо данные на несуществующих пересечениях. Никакой ошибки или предупреждения при этом по-прежнему не генериуется, но такое поведение всё равно лучше. Теперь пользователь быстрее обнаружит ошибку, поймёт её причину и не увидит в отчёте некорректные результаты.
Ещё удобнее стало в Экселе. Я пытаюсь некорректно разложить меры по строкам, но даже сами значения атрибутов в сводной таблице не показываются:
Однако, если вдруг потребуется вернуться к поведению по умолчанию, взводить флаг IgnoreUnrelatedDimensions и пересчитывать куб не потребуется. Имеется функцияValidMeasure, которая имитирует эту настройку и схлопывает несвязанные меры по верхнему уровню иерархии:
Подробнее об этом Вы сможете узнать на курсе: М50578A: Язык запросов MDX для аналитических служб SQL Server (OLAP)
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?